ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java学习第19天

2021-08-04 23:34:05  阅读:171  来源: 互联网

标签:java name 19 age 学习 int void public out


多态转型示例:

package jicheng.com;

public class Animal {
    public int age;
    public String name;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Animal(int age, String name) {
        this.age = age;
        this.name = name;
    }

    public Animal() {
    }

    public void eat(){
        System.out.println("动物吃饭");
    }
}

package jicheng.com;

public class Cat extends Animal {
    public Cat(int age, String name) {
        super(age, name);
    }

    public Cat() {
    }

    public void playgame(){
        System.out.println("猫玩毛球");
    }
    public void eat(){
        System.out.println("猫吃鱼");
    }
}

package jicheng.com;

public class Dog extends Animal {
    public Dog(int age, String name) {
        super(age, name);
    }

    public Dog() {
    }
    public void eat(){
        System.out.println("狗吃骨头");
    }
}

package jicheng.com;
/*
有继承和实现关系,有方法重写,有父类引用指向子类对象(动物 animal= new 猫();)。
 */
public class Demo1 {
    public static void main(String[] args) {
       Animal a=new Cat();//向上转型
      
a.eat();
        a=new Cat(5,"加菲");
        System.out.println(a.age+" "+a.name);
        Cat c=(Cat)a;//向下转型
       
c.playgame();
        Animal B=new Dog();
        B.eat();
        B=new Dog(6,"汪汪狗");
        System.out.print(B.age+B.name);
    }
}

D:\Java\jdk-16.0.1\bin\java.exe -Didea.launcher.port=62796 "-Didea.launcher.bin.path=D:\IntelliJ IDEA 2018.2.8\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\dell\IdeaProjects\java学习\out\production\java学习;D:\IntelliJ IDEA 2018.2.8\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMainV2 jicheng.com.Demo1

猫吃鱼

5 加菲

猫玩毛球

狗吃骨头

6汪汪狗

Process finished with exit code 0

一个方法没有方法体被称为抽象方法,抽象方法必须定义在抽象类中,但抽象类可以没有抽象方法。

抽象类特点:

抽象类和抽象方法必须使用abstract关键字修饰

Public abstract class 类名{}

Public abstract void(方法类型) 方法名();

抽象类不能直接实例化,但抽象类可以参照多态性形式通过子类对象实例化,这叫抽象类多态。

抽象类的子类,要么重写抽象类中的抽象方法,要么是抽象类。

抽象类的成员特点

成员变量:可以是常量,也可以是变量

构造方法:有构造方法,但不能实例化,构造方法用于子类访问父类数据的初始化。

成员方法:可以有抽象方法:限定子类必须完成某些动作,也可以有非抽象方法,提高代码复用性。

抽象类示例:

package jicheng.com;

public abstract class  Animal1 {

    private int age;
    private String name;
    private int weight;

    public Animal1(int age, String name, int weight) {
        this.age = age;
        this.name = name;
        this.weight = weight;
    }

    public Animal1() {
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getWeight() {
        return weight;
    }

    public void setWeight(int weight) {
        this.weight = weight;
    }

    public abstract void eat();
    public abstract void speak();
    public abstract void show();
}

package jicheng.com;

public class Cat1 extends Animal1 {
    public Cat1(int age, String name, int weight) {
        super(age, name, weight);
    }

    public Cat1() {
    }

    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }

    public void speak(){
        System.out.println("喵喵");
    }

    public  void show(){
        System.out.println(getName()+","+getAge());
    }
}

package jicheng.com;

public class Dog1 extends Animal1 {
    public Dog1(int age, String name, int weight) {
        super(age, name, weight);
    }

    public Dog1() {
    }

    public void eat() {
        System.out.println("狗吃骨头");
    }

    public void speak(){
        System.out.println("汪汪");
    }

    public  void show(){
        System.out.println(getName()+","+getAge());
    }
}

package jicheng.com;

public class Demo3 {
    public static void main(String[] args) {
        Animal1 a=new Cat1();
        a= new Cat1(18,"小红",20);
        a.eat();
        a.speak();
        a.show();
        Animal1 b=new Dog1();
        b=new Dog1(19,"小黑",30);
        b.eat();
        b.speak();
        b.eat();
        b.show();
    }
}

D:\Java\jdk-16.0.1\bin\java.exe -Didea.launcher.port=61277 "-Didea.launcher.bin.path=D:\IntelliJ IDEA 2018.2.8\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\dell\IdeaProjects\java学习\out\production\java学习;D:\IntelliJ IDEA 2018.2.8\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMainV2 jicheng.com.Demo3

猫吃鱼

喵喵

小红,18

狗吃骨头

汪汪

狗吃骨头

小黑,19

 

Process finished with exit code 0   0804

接口概述:

接口是一种公共的规范标准,只要符合规范标准,大家都可以通用

Java中的接口体现在对行为的抽象。

接口特点:

(1)接口用关键字interface修饰

      Public interface 接口名{}

(2)类实现接口用implements表示:

      Public class 类名 implements 接口名{}

(1) 接口不能直接实例化:

接口实例化参照多态形式,通过类对象实例化,这叫接口多态。

多态的形式:具体类多态,抽象类多态,接口多态。

多态的前提:有继承或实现关系;有方法重写;有父(类/接口)引用指向(子/实现)类对象。

(2) 接口的实现类:

要么重写接口中的所有抽象方法

要么是抽象类。

标签:java,name,19,age,学习,int,void,public,out
来源: https://www.cnblogs.com/20203923rensaihang/p/15101280.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有