代码改变世界

2017.4.6 笔记 继承

2017-04-07 15:26  mojiayi  阅读(131)  评论(0编辑  收藏  举报
encapsulation封装
inheritance继承
polymorphism多态

this();表明调用构造方法
this(3);调用构造方法的
this必须放在第一行,this调用普通方法可以不放第一行

Shitf+delete是直接删除,不走回收站
一个java文件,最多只能有一个类是public,也可以没有public类。最后java执行有main方法的类

引用注意事项:一个引用在同一时刻最多只能指向唯一一个对象,一个对象在同一时刻可以被多个引用所指向。
当其中的一个引用对对象的属性进行了修改,会反映到其他的引用当中。

//原生数据类型传过去的就是数字,传的不是引用
public class test{
	public static void main(String[] args) {
		C c =new C();
		int a=2;
		c.test(a);
		System.out.println(a);
	}
}
class C{
	public void test(int i){
		i++;
	}
}
打印结果是a=2,原生数据类型传过去就是传过去了,不是指针,没有指向

public static void main(String[] args) {
	Person2 person =new Person2();
	Person2 person2 =new Person2();
		person.name="zhangsan";
		person.age=20;
		person2.name="lisi";
		person2.age=30;	
}

	public Person2(int age,String name){
		this.age=age;
		this.name=name;
	}



继承:java中是单继承的。意思是只有一个父类
java中实现
所有无显示继承的类的父类是object
调用子类的构造方法的时候,先调用父类的构造方法
子类对象创建的时候,先去调用父类不带参数的构造方法

例子:

public class April6th_继承测试 {

	public static void main(String[] args) {
		Animal a=new Animal(1);
		Dog2 d =new Dog2();

	}

}

class Animal{//父类,基类,超类
	public Animal(int i){
		
	}

}
class Dog2 extends Animal{
	public Dog2(){
		
	}
}
这样编译不过去
解决方法1:给父类加一个不带参数的构造方法
解决方法2:给子类的构造方法里加super(2);使用super显示的调用父类的构造方法
super();必须是构造器的第一行语句

重载本类之间,重写父类子类之间
重写:Override,重写也叫覆写

关于继承:
1.构造方法不能被继承
2.子类可以继承父类的方法和属性
3.创建子类对象的时候,java编译器会自动调用父类的不带参数的构造方法,如果父类没有不带参数的构造方法,有两种解决方法。第一,手动给父类提供一个无参数的构造方法。第二,使用super()方法来显示的调用父类的有参数或者没有参数的构造方法
4.父类有的,子类继承过来,父类没有的,子类可以添加,父类有的子类可以修改
5.final不能被继承
6.访问权限继承过来以后可以增大,不能减小。protected访问权限的方法,继承以后可以变成public访问权限