达内培训面向对象第五天笔记

回顾:
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{
}











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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值