java面向对象12继承性

/*

  • 面向对象特性之继承
    *1.为什么要有继承?
  • 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,
  • 那么多个类无需再定义这些属性和行为,只要继承那个类即可。
  • 此处的多个类称为子类(派生类),单独的这个类称为父类(基类 或超类)。
  • 2.类继承语法规则:
  • class Subclass extends SuperClass{
  • }
  • 一旦子类继承父类以后,子类就获取了父类中声明的所有属性和方法。
  • 如果父类中又私有的属性和方法,子类也会获取到父类的私有结构,但因为封装性的影响,子类不能直接调取
  • 子类在继承父类以后还可以定义自己特有的属性和方法,以实现功能的扩展。
  • 子类和父类的关系,不同于集合与子集的关系,子类的功能通常比父类强大。
  • 3.继承的优点:
  • 减少代码冗余,提高代码复用性。
  • 便于功能的扩展。
  • 为多态性的使用提供前提
  • 4.java中关于继承的规定
  • 一个类可以有多个子类,
  • 一个类只能有一个父类,只支持单继承,不支持多重继承
  • 类可以多层继承,父类的子类也可以有子类的子类(孙类)
  • 子类直接继承的父类是直接父类,间接继承的父类是间接父类
  • 子类继承父类后,就获取了直接父类以及所有间接父类的属性和方法
  • java中所有类(除java.lang.Object类外)都直接或间接继承java.lang.Object类
  • 也就是所有的java类都有java.lang.Object声明的功能。
  • 5.继承其他包中的类需要导包,继承其他包中的类需要父权限为public。
  • 父类中权限为protected 的属性和方法可以在不同包的子类的方法体构造器中调用,但不能被子类的实例化对象调用
  • Debug工具:
  • 排查bug的方式:
  • 1,在程序中设置输出语句,查看各阶段运行情况,适用于代码量少的情况
  • 2,适用Eclips的Debug工具,设置断点,查看各个变量的变化是否与预期一致
  • Debug工具常用操作:
  • 1step into 进入当前行所用的方法中查看源码
  • 2step over 执行当前行语句。进入下一行
  • 3step return 执行完当前行所在的方法,进入下一行
  • 4drop to frame 回到当前行所在方法的第一行,重新浏览方法体
  • 5resume 执行完当前行所在断点的所有代码,进入下一断点,如果其后没有断点则结束。
    */

创建父类

package object_chapter2;

public class ExtendsTest {
	public String name = "testname";
	private int age = 18;
	int number = 100;
	protected int argus = 33;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public int getNumber() {
		return number;
	}
	public void setNumber(int number) {
		this.number = number;
	}
	public int getArgus() {
		return argus;
	}
	public void setArgus(int argus) {
		this.argus = argus;
	}
			
}

创建不同包的子类

package exercise;

import object_chapter2.*;

//import exercise.ObjectTest; 
public class Test {
	public static void main(String[] args) {
		Subclass sc = new Subclass();
		sc.test();
		System.out.println(sc.name);
		System.out.println(sc.getArgus());
		Subclass sc1 = new Subclass(43);
		System.out.println(sc1.getArgus());
		System.out.println(new Subclass().getArgus());
	}	
}
class Subclass extends ExtendsTest{
	public Subclass() {
		
	}
     public Subclass(int argus) {
		this.argus = argus;
	}
	 public void test() {
		 argus = 23;
		 name = "KK";
	 }
	 public int getArgus() {
		 return argus;
	 }
}
发布了47 篇原创文章 · 获赞 1 · 访问量 1062

猜你喜欢

转载自blog.csdn.net/wisdomcodeinside/article/details/104105276