JAVA入门基础6**(系列更新)———面向对象(二)的继承,抽象,接口

Sat 30 06:00 12:00 06:00 Jan 31 06:00 12:00 06:00 February 已完成 day5对象1 进行中 day1blog撰写 计划中 day6对象2 现有任务 GANTT diagram functionality to JAVA basical learning

面向对象2

大致总结

  1. 封装:封装就是将客观的事物抽象成类,类中存在属于这个类的属性和方法。
  2. 继承:继承就是把父对象继承过来,这样子类就存在了父类的操作方法,java是单继承,就是只能继承一个父对象。
  3. 多态:多态就是程序中允许出现重名现象,java实现多态的方式有方法重载和成员变量覆盖两种形式。

继承

上课的时候我们讲解的是这个例子

现在需要制作一个媒体资料库;
可以向资料库存放图片、视频;
资料库可以对其包含的所有的图片/视频进行遍历,展示其信息;
图片:title;size;format;px;isCopy
视频:title;size;format;playingTime;isCopy

我们来自己做一个新例子

现在需要制作一个学生系统管理库;
可以输入存放姓名,学号,学生的照片;
资料库可以对学号,姓名,照片进行遍历,展示其信息;
学号:usernum
姓名:username
头像照片:title;size;format;px;isCopy
自我介绍:title;size;format;word

public class demo1 {
    ArrayList<Item> items=new ArrayList<Item>();
    public void add(Item item){
        items.add(item);
    }
    public void list(){
        for(Item zz:items){
            zz.show();
        }
    }
}
public class Item {
    private String username;
    private int usernum;
    private String title;
    
    private int size;
    private String format;
    public Item() {
    }

    public Item(String username,int usernum,String title, int size, String format) {
        this.username = username;
        this.usernum=usernum;
        this.title = title;
        this.size = size;
        this.format = format;
    }
    public void show(){
        System.out.println( "/"+username"/"usernum+":"+title+"."+format);
    }
}

public class zaopian extends Item {
    private int px;
    private boolean isCopy=true;
    public zaopian(String title, int size, String format, int px) {
        super(title,size,format);
        this.px = px;
    }
    @Override
    public void show(){
        System.out.print("学生照片:");
        super.show();
    }
}
public class word extends Item{

    private word;

    public word(String title,int size, String format, String word) {
        super(title,size,format);
        this.word = word;
    }

@Override

@Override-------------------这个用于重写父类方法用的,用这个注解可以避免方法名跟参数写错。
@Override
 public void show(){
     System.out.print("自我介绍:");
     super.show();
 }
}

super();的应用

super();方法向父类传递对应的参数,

调用顺序

子类调用方法时优先调用自己

构造顺序

父类构造->子类的定义初始化->构造器初始化

多态

什么是多态???

(自己的话解释):
多态就是对同一个对象,在不同时刻表现出来的不同形态;

(上课的内容):
一个变量可以管理自己或子类的对象的现象叫多态

多态有什么用???

子类的对象可以被当作父类的对象来使用

多态使用方法(概念)???
  • 赋值给父类的变量
  • 传递给需要父类对象的函数
  • 放进存放父类对象的容器里
public class way1 extends did{
@Override
public void doit() {
System.out.println(“way1 done”);
}
//自己独有
public void way1pro(){
System.out.println(“way1 completed ”);
}
}

public class way2 extends did {
@Override
public void doit() {
System.out.println(“way2 done);
}
//自己独有的方法
public void way2pro(){
System.out.println(“way2 completed ”);
}
}

造型

这里还是要较多的以上课内容为主

什么是造型???
  • 把一个类的实例对象赋值给另外一个类的变量的过程叫做造型
造型要知道的概念???
  • 父类的变量可以管理子类的对象(向上造型)

  • 子类的变量不能管理父类的对象

造型具体方法举例???

此处引用上课的例子:

 Vehicle v=new Vehicle();
 Car c=new Car();
 v=c;	//可以
 c=v;	//编译错误!会爆红
 
向上向下造型

下为举例区分向上向下造型;

	class A {
	}
 
	class B extends A {
	}
 
	A a = new A();
	B b = new B();
 
	A a1 = b;// 向上造型
	B b1 = (B) a1; // 向下造型
	B b2 = a; // ClassCastException,a的类型是A,实例化也是A

除非用向下造型,c=(Car)v; 但是前提是v管理的的确是一个Car的对象

需要注意事项:

  • 向上造型总是安全的,是默认的,不需要加括号
  • 向下造型是强制的,是不安全的,可能会发生异常
  • 造型不是类型转换
造型总结
**向上造型:**

*父类引用指向子类对象(子类型,实例也是子类的实例化);*

**向下造型:**

*子类引用指向父类对象(父类型,实例是子类的实例化);*

抽象

什么是抽象???

abstract修饰符修饰的对象

现在需要做三个类

矩形,三角形,圆形

每个类里面都需要有计算周长的方法getPerimeter();

和计算面积的方法getArea();

抽象类和抽象方法(abstract)

  • 抽象方法——表达概念而无法实现具体代码的方法
  • 抽象类——表达概念而无法构造出实体的类
  • 有抽象方法的类一定是抽象类,但是抽象类不一定只有抽象方法
  • 继承自抽象类的子类一定要重写父类中的抽象方法

两种抽象

  • 与具体相对
    • 表达概念而非实体
  • 与细节相对
    • 关注大局而不过分在意具体实现

接口

接口概念
 接口就是一个规范和抽象类比较相似。它只管做什么,不管怎么做。通俗的讲,借口就是某个事物对外提供的一些功能的声明,其定义和类比较相似,只不过是通过interface关键字来完成
知识点

1.接口属性默认:public static final-----;

2.接口方法默认:public abstract-----;

上课内容:

现在有一个手机类Phone,和人类Person

两者都有发出声音的方法Sound();

我们想把这个公共的方法提取出来但是又不违和;

public interface Soundable{
    public void sound();
}
public class Phone implements Soundable{
    @Override
    public void sound(){
        System.out.println("叮铃铃");
    }

}
public class Person implements Soundable {
    @Override
    public void sound(){
        System.out.println("你好");
    }
}

接口的一些机制

  • 接口里的所有方法都是抽象方法,即使前面没有加abstract声明,系统会自动默认
  • 接口里的所有变量都是静态变量
  • 接口可以继承接口,但不能继承类
  • 接口不能有实体
  • 一个类可以实现多个接口,实现 用关键字 implements

接口存在的意义

  • 将某个功能抽象出来,提高可扩展性
  • 是Java成功的关键之一,因为极适合多人写一个大程序
  • 也是Java被批评的要点之一,因为容易造成代码膨胀
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值