继承
public class xxx类 extends xxx类
父类构造器执行结束后再执行子类构造器
内存中,子类比父类的范围要更大,在new 继承的子类时就包含了父类
只要是子类能访问的东西都能访问ww
public 可以(全都可以) protected 可以(无法跨包) 默认的 可以(但子类不能访问) private 不行(仅能在原包原类进行)
跨包同样可以进行继承,但是需要导包,并且只能看得到public类型的,protected和默认的还有private这三种是无法跨包进行访问的
子类的方法可以对父类方法进行重写(并非重载)
public class t1{
public void test(){
system.out.println("狗在跑")
}
}
public class t2 extends t1{
public void test(){
system.out.println("狗在50的速度跑")
}
}
重写需要有继承,是子类重写父类的方法,父类无法重写子类方法
子类方法名与参数要与父类的参数一模一样,如果有返回值,那也得一样(也就是说子类重写的那个方法与父类里的方法一模一样,但访问修饰符是可以改的,但访问修饰符在子类的重写需要比父类权限高或者一样
public class t1{
public void test(){
system.out.println("狗在跑")
}
}
public class t2 extends t1{
public void test(){
system.out.println("狗在50的速度跑")
}
}
上为相同级别的访问修饰符重写/
下为不同级别的访问修饰符重写/
public class t1{
private void test(){
system.out.println("狗在跑")
}
}
public class t2 extends t1{
public void test(){
system.out.println("狗在50的速度跑")
}
}
final 进行修饰方法和类的时候,这个方法或者类不能被重写与继承
final public class t1{
private void test(){
system.out.println("狗在跑")
}
}
public class t2 extends t1{//此处将会报错,说以final修饰的类不能被继承
public void test(){
system.out.println("狗在50的速度跑")
}
}
super()调用父类的构造器,super指代的就是父类对象,在子类中你要调用父类的方法和父类的构造器
使用方法和this类似,位置摆放也和this差不多,都放在第一行代码
super也可以调用方法
注意
在java中,继承只是单根继承,子类仅仅只能继承一个类,但父类可以被多个子类继承
在c++中,继承是可以多根继承的