(11.28)Java小知识!

  关于继承的继承机制:继承中最常使用的两个关键字是exteds和implements。今天主要和大家分享extends的知识点。这两个关键字的使用决定了一个对象和另一个对象是否是IS-A关系。同时我们还能实现一个对象获取另一个对象的属性或方法。

1.继承的定义:

通过extends关键字可以申明一个类是继承另外一个类而来的,一般形式如下:

public class A{  //A.Java
    private int i;
    protected int j;
    public void func(){...
    }
}
public class B extends A {...//B.Java
}

 以上代码说明,类B有类A继承而来的,B是A的子类,而A是Object的子类。作为子类,B 的实例拥有A所有的成员变量,但对于private的成员变量类B却没有访问权限,这保障了A的封装性。

  另外在程序的处理中发现两个类的定义非常相似,有很多的相同点,如教师的属性姓名,所属学校类似,类的方法也基本相同。针对这种情况,将两个类的共性抽取出来,形成父类,使得这两个类成为父类的子类,则子类继承父类的基本属性和方法,不再存在重复的代码,从而实现了代码的复用性。

2.继承的传递性:

类的继承是可以传递的。类B继承了类A。类C又继承了类B,这是C包涵A和B的所有成员及方法,以及C自身的成员与方法,这称为类的继承的传递性。类的传递性对Java语言有重要的意义。

3.类中的属性的继承与隐藏:

关于类的属性继承也就是子类可以以继承父类的所有非私有属性,而关于属性的隐藏,指的是子类可以隐藏继承的成员变量,对于子类,可以从父类继承的成员变量,只要子类中定义的成员变量和父类中的成员变量同名,子类就隐藏了继承的成员变量。

4.方法的继承:

父类中的非私有方法都可以被子类继承:

class Person{  //父类
	private String name;
	private int age;
	public void initInfo(String s,int i) {
		name = s;
		age = i;
	}
	public void showInfo() {
		System.out.println("尊敬的"+name+",您的年龄为:"+age);
	}
}
	public class SubStundent extends Person{ /子类继承父类
		private String school;
		private int engScore;
		private int JavaScore;
		public void setScore(String s,int e,int j) {
			school=s;
			engScore=e;
			JavaScore=j;
		}
		public static void main(String[] args) {
			SubStundent objStudent = new  SubStundent();
			 objStudent.initInfo("李四", 22);
			 objStudent.showInfo();
			 objStudent.setScore("清华大学",85,90 );
		}
	}

  在子类继承父类的成员方法是,应注意:

  1.子类不能访问父类的private成员方法,但是子类可以访问父类的public、protected成员方法。

  2.访问protect的成员方法时,子类和同一包内的方法都能访问父类的protected成员方法,单其他方法不能访问。

5.方法的覆盖:

覆盖是子类对父类的允许访问的方法的实现过程进行重新编写,并且这个方法的名字、返回类型、参数列表与从父类继承的方法完全相同。覆盖的好处在于子类可以根据需要,定义自己特定的 行为。也就是说,子类能够根据需要实现父类的方法。在面对对象原则里,覆盖意味着可以重写任何现有方法。子类通过方法的覆盖可以隐藏继承的方法。

6.方法的重载:

与方法的覆盖不同,方法的重载不是父子类之间的同名方法的调用,而是在一个类中允许同名的方法存在,是类对自身同名方法的重新定义。重载是在一个类里面实现的,方法的名字相同而参数等不同。返回类型可以相同也可以不同。每个重载方法都必须有一个独一无二的参数类型列表。

posted @ 2017-11-28 21:58  不只学Java  阅读(145)  评论(0编辑  收藏  举报