Java面向对象之类、接口、多态

Java面向对象之类、接口、多态

class Person {
    // 实例属性
    int age;
        String name;
    // 类属性
    static int v = 1;

    // 构造器
    public Person() {}
    // 构造器重载
    public Person(int age, String name) {
        this.age = age;
        this.name = name;
    }
    // 实例方法
    public void tell_age() {
        System.out.println(this.age);
    }
    // 方法重载
    public void tell_age(String s) {
            System.out.println(this.age + " " + s);
    }

    // 类方法
    public static void print_v() {
        System.out.println(v);
    }
}

// 类的继承
// 继承可以继承除了private的一切方法和属性
// Object是Java的顶级父类
class Man extends Person {
    // 方法覆盖
    @Override
    public void tell_age() {
        super.tell_age(); // 执行父类的此方法
        System.out.print("Man eat...");
    }
}

接口

interface,类似于swiftprotocal

interface中的变量都是默认public static final修饰的

interface中的方法都是默认public abstract修饰的

注意点:

  这些修饰词可以省略一个,也可以省略多个(甚至都省略),但是不能用其他修饰词修饰.

  不写public 不是默认的 default;写default会报错

变量:

   public static final int MAX_LENGTH = 1000;

   final int MAX_LENGTH = 1000;

   static int MAX_LENGTH = 1000;

   public int MAX_LENGTH = 1000;

   int MAX_LENGTH = 1000;

方法:

   public abstract void method();

   public void method();

   abstract void method();

   void method();

interface Animal {
    public void eat();
    public void sleep();
    public void play();
}

interface Fish extends Animal {
    public void swim();
}

class AFish implements Fish {
        @Override
    public void swim() {

    }
    @Override
    public void sleep() {

    }
    @Override
    public void play() {

    }
    @Override
    public void eat() {

    }
}
// 当然,一个类也可以实现多个interface 彼此之间用逗号隔开:
// class ClassA implements interfaceA, interfaceB, interfaceC {
//
// }

多态

public class Demo {
    public static void main(String[] args) {
        Cat c = new Cat();
        // Java 多态 一个方法有多种状态
        Animal cat = new Cat();
        Animal dog = new Dog();
        cat.eat(); // cat eat ...
        cat.sleep(); // cat sleep...
        dog.eat(); // dog eat ...
        dog.sleep(); // dog sleep...
        Person p = new Person();
        p.care(cat);
        p.care(dog);
    }
}

interface Animal {
    public void eat();
    public void sleep();
}

class Cat implements Animal {
    @Override
    public void eat() {
        System.out.println("cat eat...");
    }
    @Override
    public void sleep() {
        System.out.println("cat sleep...");
    }
}

class Dog implements Animal {
    @Override
    public void eat() {
        System.out.println("dog eat...");
    }
    @Override
    public void sleep() {
        System.out.println("dog sleep...");
    }
}

class Person {
    public void care(Animal a) {
        a.sleep();
        a.eat();
    }
}

多态使程序更加具有扩展性:向上类型转化、方法的动态绑定

原文地址:https://www.cnblogs.com/jeffersonqin/p/12250308.html

时间: 2024-11-03 09:13:12

Java面向对象之类、接口、多态的相关文章

JavaSE入门学习21:Java面向对象之接口(interface)(二)

一接口实现的多态 在上一篇博文:JavaSE入门学习20:Java面向对象之接口(interface)(一)中提到了接口的实现存在多态性,那么 这一篇主要就要分析接口实现的多态. 实例一 Test.java源文件代码: public class Test{ public static void main(String[] args){ //实现接口Singer Singer s1 = new Student("Amy"); s1.sing(); s1.sleep(); s1.study

Java面向对象㈡ -- 继承与多态

Java的继承是通过extends和implement来实现的,Java不支持多继承,但是Java支持多层继承以及多实现(接口).Java继承有一个关键字super是用来指向父类.Java继承衍生出覆盖的概念.覆盖被用来支持多态.实际开发中Java通常继承于抽象类,实现于接口.如果不希望一个类被继承,或者一个方法被覆盖,或者一个成员变量被改变,就可以用final修饰.这里只说明两个问题:1,重载和覆盖的区别重载和覆盖的区别:重载发生在同一个类之中,重载要求函数名相同,参数不同(参数个数||参数类

Java面向对象程序设计--接口和内部类

1.接口的定义: In the Java programming language, an interface is not a class but a set of requirements for classes that want to conform the interface. 说明: 1) Interface 不是class,虽然interface具有class的一些特点,例如能够继承,能够定义相同类型的变量,而且和C++的abstract class非常像,但Java 的inter

JavaSE入门学习20:Java面向对象之接口(interface)

一Java接口 接口(英文:interface)是抽象方法和常量值的集合,在Java编程语言中是一个抽象类型,接口通常以interface来声 明.类是一种具体实现体,而接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部数据,也不关心这些 类里方法的实现细节,它只规定这些类里必须提供某些方法.一个类或接口通过继承接口的方式,从而来继承接口的 抽象方法. 接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念.类描述对象的属性和方法.接口则包含 类要实现的方法.除非实现接口的类是抽

Java 面向对象特性与多态面试题

java 基础核心问题汇总:https://mp.weixin.qq.com/s/yKCUlvaL9GwgpvSjBtvihQ https://mp.weixin.qq.com/s?__biz=MzI3ODc3NzQ4NQ==&mid=2247483745&idx=1&sn=4e9f6b78bb1419fd1f8aca5022986f1e&chksm=eb509a83dc27139593eeed2f840e5d849b2e9f5e00848e72ac409e1f144895

Java面向对象之接口

接口(interface): 接口的地位等同于class,换句话说接口中的所有方法都是抽象方法.在声明接口中的方法时,可以使用abstract关键字,也可以不适用,通常情况下,都会省略掉abstract关键字 可以将接口看做是特殊的抽象类(抽象类中可以有具体方法,也可以有抽象方法,而接口中只能有抽象方法,不能有具体方法) 类可以实现接口.实现使用关键字implement表示,代表了某个类实现了某个接口 一个类实现了某个接口.那么该类必须实现接口中声明的所有方法,如果该类是个抽象类,那么就无需实现

Java复习_4 接口多态和内部类

△abstract不可以修饰成员变量 △一个类可以没有抽象方法,可以定义为抽象类,这样的目的是不能让其他类建立本类对象,交给子类完成. △abstract和static(可以被类名调用方法,但是抽象方法调用没有意义)final(不能被覆盖方法)private(私有方法无法覆盖) △接口只能被实现.被用接口去继承或者用类或者抽象类去实现 △接口中定义的变量全部是常量.关键修饰符为Public static final.接口中没有构造方法,实现接口的类构造方法访问的是object,接口中的方法是Pu

java面向对象_接口

java接口 interface,是一个抽象类型,是抽象方法的集合,接口通常以interface来申明.一个类通过继承接口的方式,从而来继承接口的抽象方法. 接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念.类描述对象的属性和方法.接口则包含类要实现的方法. 除非实现接口的类是抽象类,否则该类要定义接口中的所有方法. 接口与类相似点: 一个接口可以有多个方法. 接口文件保存在.java结尾的文件中,文件名使用接口名. 接口的字节码文件保存在.class结尾的文件中. 接口相应的字节

java面向对象(接口)

一.接口的概念 接口是功能的集合, 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成 将功能的定义与实现分离,优化了程序设计 二.接口的定义 接口定义时需要使用interface关键字 public interface 接口名 { 抽象方法1; 抽象方法2; 抽象方法3; } 使用interface代替了原来的class,其他步骤与定义类相同: 接口中的方法均为公共访问的抽象方法 接口中无法定义普通的成员变量 三.类实现接口 类与接口的关系为实现关系

Java面向对象_接口应用——策略模式

概念:定义了一系列的算法,将每一种算法封装起来并可以相互替换使用,策略模式让算法独立于使用它的客户应用而独立变化. 接口抽象的就是某种方法. OO设计原则:1.面向接口编程  2.封装变化  3.多用组合,少用继承 1 public class Practice14 { 2 3 public static void main(String[] args) { 4 // TODO Auto-generated method stub 5 //用父类的引用指向子类对象 6 Bird d=new Bi