黑马程序员-------继承总结

------- android培训java培训、期待与您交流! ----------


一.代码块:
   1.代码块的种类:
1).局部代码块:定义在某个方法中;
2).成员(构造)代码块:定义在类体中,每次实例化此类对象时被调用;
3).静态代码块:定义在类体中,第一次实例化此类对象时被调用;
   2.代码块的作用:
1).跟构造方法一样,用于做一些初始化的操作;
   3.如果同时存在静态代码块、构造代码块、构造方法:
静态代码块--->构造代码块--->构造方法;

class Fu{
	{
		System.out.println("构造代码块");
	}
	Fu(){
		System.out.println("构造方法");
	}
	static {
		System.out.println("静态构造方法");
	}
}

public class Demo {
	public static void main(String[] args) {
		Fu f=new Fu();
	}
}
结果为

静态构造方法
构造代码块
构造方法


二.继承:
   1.可以将一些相同性质的类中,相同的成员,提取出来,形成一个"概念性的父类"
     子类继承了父类,就拥有了父类允许继承的成员。
   2.使用关键字:extends
   3.继承的特点:
1).只能单继承;
2).允许多级继承;
   4.注意事项:
1).父类中的私有成员不能被继承;
2).构造方法不能被继承;
3).不要为了部分功能而去继承;
   5.具有 is a 的关系时,可以使用继承;
   6.this和super的区别:
1.this指向的本类的对象,可以访问成员变量、成员方法、构造方法
2.super指向的父类的对象,可以访问父类的变量、成员方法、构造方法;

class Fu{
	int x=10;
	void show(){
	}
}
class Zi extends Fu{
	int x=20;
	void show(){
		System.out.println(this.x);
		System.out.println(super.x);
	}
}

public class Demo {
	public static void main(String[] args) {
		Zi z=new Zi();
		z.show();
	}
}
如上,this.x就是子类的20,super.x就是父类的10


   7.继承中构造方法的注意事项:
1.如果父类中有"无参"构造方法时,实例化子类时,JVM会自动调用父类中"无参构造方法"
2.如果父类中没有"无参构造方法"时,子类的构造方法中,必须显示的使用super去调用父类中
          带参的构造方法。
   8.类的实例化过程:
1.如果有父类,先处理父类:
2.如果有静态成员,先处理静态的;
3.总体过程:
父类静态成员
子类静态成员
父类普通成员变量
父类的构造代码块
父类的构造方法
子类的普通成员变量
子类的构造代码块
子类的构造方法

class Fu {
                static {
                        System.out.println("静态代码块Fu");
                }

                {
                        System.out.println("构造代码块Fu");
                }

                public Fu() {
                        System.out.println("构造方法Fu");
                }
        }

        class Zi extends Fu {
                static {
                        System.out.println("静态代码块Zi");
                }

                {
                        System.out.println("构造代码块Zi");
                }

                public Zi() {
                        System.out.println("构造方法Zi");
                }
        }
class Demo
{
        public static void main(String[] args){
                new Zi();
        }
}

执行结果为

静态代码块Fu
静态代码块Zi
构造代码块Fu
构造方法Fu
构造代码块Zi
构造方法Zi



   9.子类成员覆盖父类成员:
1.子类可以定义和父类相同的"成员变量":
this.num:本类的
super.num:父类的
2.子类可以定义和父类相同的方法:叫:方法重写
返回值类型、方法名、形参列表都完全相同;
子类拥有跟父类相同,或更宽的访问修饰符;
3.子类可以覆盖父类的静态方法;
三.fianl关键字:
1.类:表示"最终类",不能被继承;
2.成员变量、局部变量:表示拥有最终的值,其值不能被更改;
3.成员方法:表示最终的方法,不能被重写;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值