一:继承中子父类
/*
子父类出现后类中成员变化
一,变量
如果子类中出现非私有的同名变量时,
子类要访问本类对象变量,用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!");
}
}