回顾:
1.重写
2.重写与重载的区别
3.package,import
4.访问修饰符---射击游戏时建议
5.static:静态的
成员变量
方法
块
6.final:最终的
变量
方法
类
class Aoo{
void a(){
}
}
class Boo extends Aoo{
void a(){
}
void a(int num){
}
}
Boo o = new Boo();
o.a();
o.a(5);
重载,重写
笔记:
1.常量:
1)必须声明同时初始化,通过类名.来访问,不可改变
2)建议常量名所有字母大写
3)常量在编译期被替换为具体的值,所以效率高,建议使用
2.抽象方法:
1)由abstract修饰
2)只有方法的定义,没有方法的实现,参数后直接跟分号;
3.抽象类:
1)由abstract修饰
2)包含抽象方法的类,必须是抽象类
类中没有抽象方法,也可以声明为抽象类----我愿意
3)抽象类不能被实例化(不能new)
4)抽象类都是要被继承的,子类:
4.1)重写父类的所有抽象方法-----建议
4.2)声明为抽象类-----不建议
5)抽象类的意义:
5.1)父类的意义:
5.1.1)封装子类共有的成员----避免代码重复
5.2.2)为所有子类提供统一的类型(向上造型)
5.2)包含抽象方法,为子类提供一个统一的入口
4.接口
1)是一个标准、规范-------制定方
实现了接口,就能干某件事------API后就能体会到了
2)是一种引用数据类型,由interface定义
3)接口中只能包含常量(默认)和抽象方法(默认)
4)接口不能被实例化
5)接口是需要被实现(implements)的,
实现类(子类),必须实现接口中的所有抽象方法
6)只能继承一个类,但可以实现多个接口,用逗号分隔
若又继承类又实现接口时,必须先继承再实现
7)接口间可以继承(接口和接口叫继承extends,类和接口叫实现implements)
抽象类和接口的区别------常见面试题
InterfaceDemo
继承传递性
interface Inter1{
void show();
}
interface Inter2 extends Inter1{
void say();
}
class Aoo implements Inter2{
public void say(){}
public void show(){}
}
Inter2 i = new Aoo(); //向上造型
Inter1 ii = new Aoo(); //向上造型
interface Inter1{
void show();
}
interface Inter2{
void say();
}
abstract class Aoo{
abstract void sayHi();
}
class Boo extends Aoo implements Inter1,Inter2{
public void show(){}
public void say(){}
void sayHi(){}
}
class Aoo implements Inter1,Inter2{
public void show(){}
public void say(){}
}
interface Inter1{
void show();
void say();
}
class Aoo implements Inter1{
public void show(){ }
public void say(){ }
}
interface Inter1{
public static final int NUM = 5;
public abstract void show();
double PI = 3.14159; //默认就是public static final的
void say(); //默认就是public abstract的
}
接口相当于制定方
生活中的接口的例子:
1.电脑厂商做了一个USB接口----------制定标准/规范
U盘、摄像头等厂商-------------------遵守标准/规范
2.国家对于楼房--------------------------制定标准/规范
国家对于家具、家电------------------制定标准/规范
开发商、家具厂商---------------------遵守标准/规范
3.银行-------------------------------------制定标准/规范
银行卡----------------------------------遵守标准/规范
银行为制定方------------接口
银行卡为遵守方---------实现类
工行卡,农行卡
class UnionPayTest{
main(){
ICBCImpl o1 = new ICBCImpl(); //工行卡
ICBC o2 = new ICBCImpl(); //工行卡
UnionPay o3 = new ICBCImpl(); //银联卡---工行卡
UnionPay o4 = new ABCImpl(); //银联卡---农行卡
}
}
interface UnionPay{ //银联接口
存();
取();
转帐();
查询();
}
interface ICBC extends UnionPay{ //工行接口
在线支付();
}
interface ABC extends UnionPay{ //农行接口
支付电话费();
}
class ABCImpl implements ABC{ //农行卡
存(){}
取(){}
转帐(){}
查询(){}
支付电话费(){}
}
class ICBCImpl implements ICBC{ //工行卡
存(){}
取(){}
转帐(){}
查询(){}
在线支付(){}
}
银行允许的事,对应的银行卡才能干
银行卡有哪些功能呀?-----存、取、转帐、查询
银行卡到底有哪些功能和银行是有一定的关系的
建行-----天燃气
ShapeTest
需求:给我一堆图形,找到这一堆图形的最大面积
Circle[] cs = new Circle[2];
cs[0] = new Circle(1);
cs[1] = new Circle(2);
Square ss = new Square[2];
Six sixs = new Six[2];
1.写算法,找到cs中的最大面积
2.写算法,找到ss中的最大面积
3.写算法,找到sixs中的最大面积
4.比较cs最大的和ss最大的和sixs最大的,找出最大的
Shape[] shapes = new Shape[6]; //创建Shape数组对象
shapes[0] = new Circle(1); //向上造型
shapes[1] = new Circle(2);
shapes[2] = new Square(1);
shapes[3] = new Square(2);
shapes[4] = new Six(1);
shapes[5] = new Six(2);
能点出来什么,看类型
double max = shapes[0].area(); //找的都是Shape类中的area,但调的是子类重写后的
for(int i=1;i<shapes.length;i++){
double area = shapes[i].area();
if(area>max){
max = area;
}
}
System.out.println("max="+max);
abstract class Shape{ //抽象类--不完整的
double c;
abstract double area(); //抽象方法--不完整的
}
class Circle extends Shape{
double area(){ //重写抽象方法--变不完整为完整
return 0.0796*c*c;
}
}
class Square extends Shape{
double area(){
return 0.0625*c*c;
}
}
area方法的方法体没法写,方法体什么也不写
java不建议空方法
不写方法写--------编译错误,因为5要素少了一要素
new Shape(); //编译错误
abstract class Shape{ //抽象类--不完整
double c; //周长
abstract double area(); //抽象方法--不完整
}
class Circle extends Shape{
double area(){ //重写--变不完整为完整
return 0.0796*c*c;
}
}
abstract class Square extends Shape{
}
1.重写
2.重写与重载的区别
3.package,import
4.访问修饰符---射击游戏时建议
5.static:静态的
成员变量
方法
块
6.final:最终的
变量
方法
类
class Aoo{
void a(){
}
}
class Boo extends Aoo{
void a(){
}
void a(int num){
}
}
Boo o = new Boo();
o.a();
o.a(5);
重载,重写
笔记:
1.常量:
1)必须声明同时初始化,通过类名.来访问,不可改变
2)建议常量名所有字母大写
3)常量在编译期被替换为具体的值,所以效率高,建议使用
2.抽象方法:
1)由abstract修饰
2)只有方法的定义,没有方法的实现,参数后直接跟分号;
3.抽象类:
1)由abstract修饰
2)包含抽象方法的类,必须是抽象类
类中没有抽象方法,也可以声明为抽象类----我愿意
3)抽象类不能被实例化(不能new)
4)抽象类都是要被继承的,子类:
4.1)重写父类的所有抽象方法-----建议
4.2)声明为抽象类-----不建议
5)抽象类的意义:
5.1)父类的意义:
5.1.1)封装子类共有的成员----避免代码重复
5.2.2)为所有子类提供统一的类型(向上造型)
5.2)包含抽象方法,为子类提供一个统一的入口
4.接口
1)是一个标准、规范-------制定方
实现了接口,就能干某件事------API后就能体会到了
2)是一种引用数据类型,由interface定义
3)接口中只能包含常量(默认)和抽象方法(默认)
4)接口不能被实例化
5)接口是需要被实现(implements)的,
实现类(子类),必须实现接口中的所有抽象方法
6)只能继承一个类,但可以实现多个接口,用逗号分隔
若又继承类又实现接口时,必须先继承再实现
7)接口间可以继承(接口和接口叫继承extends,类和接口叫实现implements)
抽象类和接口的区别------常见面试题
InterfaceDemo
继承传递性
interface Inter1{
void show();
}
interface Inter2 extends Inter1{
void say();
}
class Aoo implements Inter2{
public void say(){}
public void show(){}
}
Inter2 i = new Aoo(); //向上造型
Inter1 ii = new Aoo(); //向上造型
interface Inter1{
void show();
}
interface Inter2{
void say();
}
abstract class Aoo{
abstract void sayHi();
}
class Boo extends Aoo implements Inter1,Inter2{
public void show(){}
public void say(){}
void sayHi(){}
}
class Aoo implements Inter1,Inter2{
public void show(){}
public void say(){}
}
interface Inter1{
void show();
void say();
}
class Aoo implements Inter1{
public void show(){ }
public void say(){ }
}
interface Inter1{
public static final int NUM = 5;
public abstract void show();
double PI = 3.14159; //默认就是public static final的
void say(); //默认就是public abstract的
}
接口相当于制定方
生活中的接口的例子:
1.电脑厂商做了一个USB接口----------制定标准/规范
U盘、摄像头等厂商-------------------遵守标准/规范
2.国家对于楼房--------------------------制定标准/规范
国家对于家具、家电------------------制定标准/规范
开发商、家具厂商---------------------遵守标准/规范
3.银行-------------------------------------制定标准/规范
银行卡----------------------------------遵守标准/规范
银行为制定方------------接口
银行卡为遵守方---------实现类
工行卡,农行卡
class UnionPayTest{
main(){
ICBCImpl o1 = new ICBCImpl(); //工行卡
ICBC o2 = new ICBCImpl(); //工行卡
UnionPay o3 = new ICBCImpl(); //银联卡---工行卡
UnionPay o4 = new ABCImpl(); //银联卡---农行卡
}
}
interface UnionPay{ //银联接口
存();
取();
转帐();
查询();
}
interface ICBC extends UnionPay{ //工行接口
在线支付();
}
interface ABC extends UnionPay{ //农行接口
支付电话费();
}
class ABCImpl implements ABC{ //农行卡
存(){}
取(){}
转帐(){}
查询(){}
支付电话费(){}
}
class ICBCImpl implements ICBC{ //工行卡
存(){}
取(){}
转帐(){}
查询(){}
在线支付(){}
}
银行允许的事,对应的银行卡才能干
银行卡有哪些功能呀?-----存、取、转帐、查询
银行卡到底有哪些功能和银行是有一定的关系的
建行-----天燃气
ShapeTest
需求:给我一堆图形,找到这一堆图形的最大面积
Circle[] cs = new Circle[2];
cs[0] = new Circle(1);
cs[1] = new Circle(2);
Square ss = new Square[2];
Six sixs = new Six[2];
1.写算法,找到cs中的最大面积
2.写算法,找到ss中的最大面积
3.写算法,找到sixs中的最大面积
4.比较cs最大的和ss最大的和sixs最大的,找出最大的
Shape[] shapes = new Shape[6]; //创建Shape数组对象
shapes[0] = new Circle(1); //向上造型
shapes[1] = new Circle(2);
shapes[2] = new Square(1);
shapes[3] = new Square(2);
shapes[4] = new Six(1);
shapes[5] = new Six(2);
能点出来什么,看类型
double max = shapes[0].area(); //找的都是Shape类中的area,但调的是子类重写后的
for(int i=1;i<shapes.length;i++){
double area = shapes[i].area();
if(area>max){
max = area;
}
}
System.out.println("max="+max);
abstract class Shape{ //抽象类--不完整的
double c;
abstract double area(); //抽象方法--不完整的
}
class Circle extends Shape{
double area(){ //重写抽象方法--变不完整为完整
return 0.0796*c*c;
}
}
class Square extends Shape{
double area(){
return 0.0625*c*c;
}
}
area方法的方法体没法写,方法体什么也不写
java不建议空方法
不写方法写--------编译错误,因为5要素少了一要素
new Shape(); //编译错误
abstract class Shape{ //抽象类--不完整
double c; //周长
abstract double area(); //抽象方法--不完整
}
class Circle extends Shape{
double area(){ //重写--变不完整为完整
return 0.0796*c*c;
}
}
abstract class Square extends Shape{
}