JAVA --- 面向对象

一.面向对象编程的三大特征

1.1 封装

细节隐藏,系统安全性,整体考虑

1.2 继承

1.3 多态 

二.继承

2.1 需求

创建图形化固体,类似于普通window窗口

package ff20240421;

import javax.swing.*;

public class MyWindow extends JFrame {
    public MyWindow(){
        //设置窗体的大小
        setBounds(100,100,400,300);
        this.setTitle("演示继承窗体");
        this.setVisible(true);
    }

    public static void main(String[] args) {
        MyWindow myWindow = new MyWindow();
    }

}

 2.2 什么情况下可以使用继承

IS     A

A    is  a   B

2.3 访问控制符

 protected-------继承(包)

 private < 默认(不写)<protected(继承) < public

2.4练习

设计一个动物类(animal),有一个move(),在写三个动物,Bird,Snake,Fish

Animal  

package ff0512.Anmial;

public class Animal {
    public void move(){
        System.out.println("可以移动……");
    }
}
package ff0512.Anmial;

import ff0512.Anmial.Animal;

public class Bird extends Animal {


}
package ff0512.zuoye;

import ff0512.Anmial.Animal;

public class Snake extends Animal {




}
package ff0512.Anmial;

import ff0512.Anmial.Animal;

public class Fish extends Animal {
    
}
package ff0512.Anmial;

import ff0512.zuoye.Snake;

public class Test {
    public static void main(String[] args) {
        Animal a =new Animal();
        a.move();

        Fish  f = new Fish();
        f.move();

        Animal s= new Snake();
        s.move();

        //代表测试的对象是不是子类
        //子类  instanceof 父类
        System.out.println(s instanceof Animal);
    }
}

2.5方法重写 

2.5.1方法重载

在一个类中,方法名称完全一样,参数的类型或者个数不一样

2.5.2方法重写(覆盖)

 继承关系

package ff0512.Anmial;

import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;
import ff0512.Anmial.Animal;

public class Bird extends Animal {
    @Override   //覆盖
    public void move() {
        System.out.println("早起的鸟儿有虫吃……");
    }
}

三.多态 

具有继承关系
    1.父类引用指向子类对象 Animal   a=new Dog();  保证类型一致
    2.子类对父类的方法进行重写。
    3.在不同时刻调用调用相同的方法,结果不同

package ff0512.transport;

public abstract class Vehicle {
    public abstract void  transport();

}
package ff0512.transport;

public class Plant extends Vehicle {
    @Override
    public void transport() {
        System.out.println("坐飞机^-^");
    }
}
package ff0512.transport;

public class TestPlant {
    public static void main(String[] args) {
        Vehicle v = new Plant();
        v.transport();
    }
}

四.动物模型的问题

1.Animal中的方法

实际上没有多大的问题,被子类的方法重写 

设计的目的:如果子类不重写。 提供一个规范

4.2抽象类

特点:类,不能被实例化,Acaculator c = new MyCaculator();

abstract

public abstract class ACaculator{
    public abstract double add(double a,double b);
    public abstract double minus(double a,double b);
    public abstract double mul(double a,double b);
    public abstract double divide(double a,double b);

    public  abstract int pow (int a, int b);
   
}

 五.接口(interface)

java的继承---》单继承,

多继承---》接口

 abstract  class ---  interface

extends ----- implements

package com.ffyc.sys;
import java.util.Date;
/** 
* interface = abstract class 
*/
public interface ICaculator {   
int add(int ... a);    
double minus(double a, double b);    
double mul(double a, double b);    
double divide(double a, double b);    
int pow(int a, int b);    
int max(int...a);    
int second(int... a);    
String sort(int a, int b , int c);    
Date parse(String d);    
/**     
* 将一个整数转换为二进制字符串返回     
* @param a     
* @return     
*/    
String toBinary(int a);    
/**     
* 算出第几个斐波拉切数列的值     
* @param n     
* @return     
*/    
int fac(int n);
}

                                                                                                                                                                                                    

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值