7.18_java学习_继承

一:继承中子父类

/*
子父类出现后类中成员变化
一,变量
如果子类中出现非私有的同名变量时,
子类要访问本类对象变量,用this、
子类要访问父类对象变量,用super、
this代表的是子类的对象引用
super代表的是父类的对象的引用
二.函数
当子类出现和父类一样的函数事,父类函数将被覆盖
注意:
1.子类覆盖父类,必须保证子类权限大于等于父类权限(private修饰的函数不能覆盖)
2.静态只能覆盖静态
三:子父类中的构造函数
1.在堆子类对象进行初始化时,父类的构造函数也会运行。
2.为什么子类一定要访问父类中的构造函数
答:因为父类中的数据子类可以直接获取,所以子类对象建立时,需要先查看父类对这些数据如何初始化的。

*/class fu 
{
	int num = 4;
	fu()
	{
	}
	void show()
	{
		System.out.println(num);
	}
}
class zi extends fu
{
	int num = 5;
	zi()
	{
		//super()//隐式语句(必须写在第一行)。不写jvm默认写上去.访问父类中无参数认构造函数。
		//父类中没有无参数构造函数,就需要自己手动写。
	}
    void show()
	{
		System.out.println(super.num);
	}
}
class ExdentsDemo
{
	public static void main(String[] args) 
	{
		zi z = new zi();
		z.show();
	}
}


 


二:抽象类

 

/*
子父类出现后类中成员变化
一,变量
如果子类中出现非私有的同名变量时,
子类要访问本类对象变量,用this、
子类要访问父类对象变量,用super、
this代表的是子类的对象引用
super代表的是父类的对象的引用
二.函数
当子类出现和父类一样的函数事,父类函数将被覆盖
注意:
1.子类覆盖父类,必须保证子类权限大于等于父类权限(private修饰的函数不能覆盖)
2.静态只能覆盖静态
三:子父类中的构造函数
1.在堆子类对象进行初始化时,父类的构造函数也会运行。
2.为什么子类一定要访问父类中的构造函数
答:因为父类中的数据子类可以直接获取,所以子类对象建立时,需要先查看父类对这些数据如何初始化的。

*/class fu 
{
	int num = 4;
	fu()
	{
	}
	void show()
	{
		System.out.println(num);
	}
}
class zi extends fu
{
	int num = 5;
	zi()
	{
		//super()//隐式语句(必须写在第一行)。不写jvm默认写上去.访问父类中无参数认构造函数。
		//父类中没有无参数构造函数,就需要自己手动写。
	}
    void show()
	{
		System.out.println(super.num);
	}
}
class ExdentsDemo
{
	public static void main(String[] args) 
	{
		zi z = new zi();
		z.show();
	}
}


 

三:最终类

/*
final : 最终,作为一个修饰符。
1,可以修饰类,函数,变量、
2,被Final修饰的类不可以被继承
3,继承打破了封装
*/
final class Demo
{
	void show(){}
}
class subDemo extends Demo
{
}
class Final 
{
	public static void main(String[] args) 
	{
		System.out.println("Hello World!");
	}
}


 

四:模板

/*
模板:
计算程序运行时间
获取时间:System.currentTimeMillis();

这种方法:模块方法设计模式.

什么是模板方法呢?
答:在定义功能时,功能的一部分是确定的,到是有一部分不确定。而确定的部分在使用不确定的部分。
那么这时就将不确定的部分暴露出去
*/
abstract class GetTime
{
	public final void getTime()
	{
		long start = System.currentTimeMillis();
		runcode();
		long end = System.currentTimeMillis();
		System.out.println(" 毫秒:"+(end-start));
	}
	public abstract void runcode();
}
class subTime extends GetTime 
{
	public viod runcode()
	{
		for(int x=0;x<1000;x++)
			System.out.println(x);
	}
}
class Template 
{
	public static void main(String[] args) 
	{
		new GetTime().getTime();
	}
}


五:接口

/*
接口:可以认为是一个特殊的抽象类
   当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示

   接口定义时,格式特点:
   1,接口中常见定义,常量,抽象方法。
   2,接口中的成员都有固定修饰符。
      常量 public static final
	  方法 public abstract
记住:
1.接口中的成员都是public的。
2.不写全可以补全(可以这么写 int NUM; void show()和下面定义效果一样)
3,不可以创建对象的,因为有抽象方法。

接口特点:
1, 接口是对外暴露的规则。
2, 接口是程序的功能扩展
3,接口可以用来多实现
4,类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口。
5,接口与接口之间可以有继承关系
*/
interface Inter
{
	public static final int NUM = 3;
	public abstract void show();
}
class Test implement Inter
{
}
class Inteface 
{
	public static void main(String[] args) 
	{
		System.out.println("Hello World!");
	}
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值