当前位置:首页 > CN2资讯 > 正文内容

我的世界如何显示位置坐标 java

8小时前CN2资讯


Day10

多态

多态的概述及其代码体现

/* A:多态概述(polymorphic) *事物存在的多种形态; B:多态前提 *要有继承关系; *要有方法重写; *要有父类引用指向子类对象; C:案例演示 *代码体现多态 */ class Demo1_Polymorphic { public static void main(String[] args) { Cat c = new Cat(); c.eat(); Animal a = new Cat(); //父类引用指向子类对象 a.eat(); } } class Animal{ public void eat(){ System.out.println("动物吃饭"); } } class Cat extends Animal { public void eat(){ System.out.println("猫吃鱼"); } }

多态的成员访问特点之成员变量

/* *成员变量 *编译看左边(父类),运行看左边(父类) */ class Demo2_Polymorphic { public static void main(String[] args) { Father f = new Son(); //父类引用指向子类对象; System.out.println(f.num); Son s = new Son(); System.out.println(s.num); } } class Father { int num = 10; } class Son extends Father { int num = 20 ; }


多态中的访问特点之成员方法

/* 成员方法 编译看左边(父类),运行看右边(子类)(动态绑定) */ class Demo2_Polymorphic { public static void main(String[] args) { /*Father f = new Son(); //父类引用指向子类对象; System.out.println(f.num); Son s = new Son(); System.out.println(s.num); */ Father f = new Son(); f.print(); } } class Father { int num = 10; public void print (){ System.out.println("father"); } } class Son extends Father { int num = 20 ; public void print (){ System.out.println("son"); } }

多态访问特点之静态成员方法

/*静态方法 *编译看左边(父类),运行看左边(父类); *(静态和类相关,算不上重写,所以还是看左边); *只有非静态的成员方法,编译看左边,运行看右边; */

多态中的向上和向下转型

class Demo3_SuperMan { public static void main(String[] args) { Person p = new SuperMan(); //父类引用指向子类对象 //父类引用指向子类对象,就是向上转型 System.out.println(); //体现父类属性; p.business(); //调用子类方法 SuperMan s = (SuperMan)p ; //向下转型 s.fly(); /* 基本数据类型自动类型提升和强制类型转换 int i = 10; byte b = 20; i = b; //自动类型转换 b = (byte)i; //强制类型转换 */ } } class Person { String name = "John"; public void business(){ System.out.println("谈生意"); } } class SuperMan extends Person { String name = "superman"; public void business(){ System.out.println("谈几个亿的大单"); } public void fly(){ System.out.println("飞出去救人"); } }

多态的好处和弊端

/*A:多态的好处 a:提高了代码的维护性(继承保证); b:提高了代码的扩展性(由多态保证); B:多态的弊端 *不能使用子类特有的属性和行为; C:案例演示*/ class Demo4_Animal { public static void main(String[] args) { method(new Cat()); method(new Dog()); } Animal a = new Cat(); //开发的时候很少在创建对象的时候用父类引用指向子类对象,直接创建子类对象更方便,可以使用子类中的特有属性 /*public static void method(Cat c){ c.eat() ; } public static void method(Dog d){ d.eat() ; */ //若果把狗强制转换成猫就会出现类型转换异常, ClassCastException: Dog cannot be cast to Cat public static void method(Animal a){ //当做参数的时候用多态,因为扩展性强 /*Cat c = (Cat)a; c.eat(); c.catchMouse(); */ //关键字 instanceof 判断前边的引用是否是后边的数据类型 if (a instanceof Cat) { Cat c = (Cat)a; c.eat(); c.catchMouse(); } else if (a instanceof Dog) { Dog d = (Dog)a; d.eat(); d.watchDog(); } else { a.eat(); } } } class Animal { public void eat(){ System.out.println("动物吃饭"); } } class Cat extends Animal { public void eat(){ System.out.println("猫吃鱼"); } public void catchMouse(){ System.out.println("抓老鼠"); } } class Dog extends Animal { public void eat(){ System.out.println("狗吃肉"); } public void watchDog(){ System.out.println("看家护院"); } }

多态案例演示

class Test1_Polymorphic { public static void main(String[] args) { Fu f = new Zi(); //f.method(); Zi z = (Zi)f; z.method(); f.show(); } } class Fu { public void show(){ System.out.println("fu show"); } } class Zi extends Fu { public void show(){ System.out.println("Zi show"); } public void method(){ System.out.println("Zi method"); } }class Test2_Polymorphic { public static void main(String[] args) { A a = new B(); a.show(); B b = new C(); b.show(); } } class A { public void show(){ show2(); } public void show2(){ System.out.println("我"); } } class B extends A { public void show2(){ System.out.println("爱"); } } class C extends B { public void show(){ super.show(); } public void show2(){ System.out.println("你"); } }

抽象类

抽象类的概述及其特点

A:抽象类概述: *抽象就是看不懂的; B:抽象类特点: *a:抽象类和抽象方法必须用abstract关键字修饰; * abstract class 类名{} * public abstract void eat(); *b:抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者接口; *c:抽象类如何实例化: *按照多态的方式,用具体的子类实例化,其实这也是多态的一种,抽象类多态 *d:抽象类的子类 *要么是抽象类 *要么重写抽象类中所有抽象方法; C:案例演示 *抽象类特点 class Demo1_Abstract { public static void main(String[] args) { //Animal a = new Animal(); //错误: Animal是抽象的; 无法实例化 Animal a = new Cat(); a.eat(); } } abstract class Animal { //抽象类 public abstract void eat(); //抽象方法 } class Cat extends Animal{ /*public void eat(){ System.out.println("猫吃鱼"); }*/ }

抽象类的成员特点

/* *A:抽象类的成员特点: *a:成员变量:既可以是变量,也可以是常量,abstract是否可以修饰成员变量? 不能修饰成员变量; *b:构造方法:有 *用于子类访问父类的初始化; *B:案例演示 *抽象类的成员特点 *C:抽象类的成员方法特性: *a:抽象方法:强制要求子类做的事情; *b:非抽象方法,子类继承的事情,提高代码的复用性; */ class Demo2_Abstract { public static void main(String[] args) { System.out.println("Hello World!"); } } abstract class Demo { int num = 10; final int NUM = 20; public void print(){ System.out.print("111"); } public abstract void method(); } class Test extends Demo { public void method(){ System.out.println("111"); } }

抽象类练习

class Test1_Animal { public static void main(String[] args) { Cat c = new Cat("加菲", 8); System.out.println(c.getName() + "----" +c.getAge()); c.eat(); c.catchMouse(); Dog d = new Dog("八公",30); System.out.println(d.getName() + "----" +d.getAge()); d.eat(); d.watchDog(); } } abstract class Animal { private String name ; //姓名 private int age; //年龄 public Animal(){}; public Animal(String name,int age){ = name; this.age = age; } public void setName(String name){ = name; } public String getName(){ return name; } public void setAge(int age){ this.age = age; } public int getAge(){ return age; } public abstract void eat(); } class Cat extends Animal{ public Cat(){}; public Cat(String name ,int age) { super(name,age); } public void eat(){ System.out.println("猫吃鱼"); } public void catchMouse(){ System.out.println("抓老鼠"); } } class Dog extends Animal{ public Dog(){}; public Dog(String name ,int age) { super(name,age); } public void eat(){ System.out.println("狗吃肉"); } public void watchDog(){ System.out.println("看家护院"); } }class Test2_Teacher { public static void main(String[] args) { BaseTeacher bt = new BaseTeacher("冯佳",23); bt.teach(); } } abstract class Teacher { private String name ; //姓名 private int age; //年龄 public Teacher(){}; public Teacher(String name,int age){ = name; this.age = age; } public void setName(String name){ = name; } public String getName(){ return name; } public void setAge(int age){ this.age = age; } public int getAge(){ return age; } public abstract void teach() ; } class BaseTeacher extends Teacher{ public BaseTeacher(){}; public BaseTeacher(String name,int age){ super(name,age); } public void teach(){ System.out.println("我的姓名是" + this.getName() + ";我的年龄是:" + super.getAge() + ",讲课内容是Java基础"); } }//项目经理和程序员类 class Test_Employee { public static void main(String[] args) { Coder c = new Coder("啦啦啦啦","007",20000); c.work(); Manger m = new Manger("苍老师","9527",8000,20000); m.work(); } } abstract class Employee { private String name; private String id; private double salary; public Employee(){}; public Employee(String name,String id,double salary){ = name; this.id = id; this.salary = salary; } public void setName(String name){ =name; } public String getName(){ return name; } public void setId(String id){ this.id = id; } public String getId(){ return id; } public void setSalary(double salary){ this.salary =salary; } public double getSalary(){ return salary; } public abstract void work(); } class Coder extends Employee{ public Coder(){}; public Coder(String name,String id,double salary){ super(name,id,salary); } public void work(){ System.out.println("我的姓名是:" + this.getName() +",我的工号是:" + this.getId() + ",我的工资是:" + this.getSalary() + ",我的工作内容是敲代码"); } } class Manger extends Employee { private int bonus; public Manger(){}; public Manger(String name,String id,double salary,int bonus){ super(name,id,salary) ; this.bonus = bonus; } public void work(){ System.out.println("我的姓名是:" + this.getName() +",我的工号是:" + this.getId() + ",我的工资是:" + this.getSalary() + ",我的奖金是:" + bonus +",我的工作内容是项目协调"); } }

抽象类中的面试题

A:面试题1 *一个抽象类没有抽象方法,可不可以定义为抽象类?如果可以,有何意义? 可以,这么做的目的是不让其他类创建本类对象,交给子类完成; B:面试题2 *abstract不能和哪些关键字并存? abstract 和static不能并存 //被abstract修饰的方法没有方法体;被static修饰的可以用类名.调用,但是类名.调用抽象方法是没有意义的; abstract 和final //被abstract修饰的方法强制子类重写,被final修饰的方法不允许子类重写; abstract和private //被abstract修饰的是为了让子类看到并强制重写; 被private修饰不让子类访问,所以他俩是矛盾的

接口

接口的概述及其特点

A:接口概述 *从狭义的角度讲就是Java中的interface; *从广义的角度来讲对外提供规则的都是接口; B:接口特点 *a:接口用关键字interface表示; *interface 接口名{}; *b:类实现接口用implements表示 *class 类名 implements 接口名{} *c:接口不能实例化 *那么,如何接口实例化呢? *按照多态的方式实例化; *d:接口的子类 *a:可以是抽象类,但是意义不大; *b:可以是具体类,要重写接口中所有抽象方法.(推荐方案) C:案例演示 *接口特点 class Demo1_Interface { public static void main(String[] args) { //Inter i = new Inter(); //接口不能被实例化,因为调用抽象方法没有意义 Inter i = new Demo(); 父类引用指向子类对象 i.print(); } } interface Inter { public abstract void print(); //接口中的方法都是抽象的; } class Demo implements Inter { public void print(){ System.out.println("print"); } }

接口的成员特点

*成员变量:只能是常量,并且是静态的并公共的; *默认修饰符 public static final //三个关键字不分顺序; *构造方法:接口没有构造方法; *成员方法:默认是public和abstract *默认修饰符:public abstract; *建议:手动给出 class Demo2_Interface { public static void main(String[] args) { Demo d = new Demo(); d.print(); System.out.println(Inter.num); } } interface Inter { public static final int num = 10; /*public void print(){ } */ //接口中不能定义非抽象方法; //public Inter(){}; 接口中的工作方法; } class Demo implements Inter { //一个类不写继承任何类,默认继承Object类 public void print(){ //num = 20; System.out.println(num); } }

类与类,类与接口,接口与接口的关系

/* *A:类与类,类与接口,接口与接口的关系 *a:类与类 *继承关系,只能单继承,可以多层继承; *b:类与接口: *实现关系,可以单实现,也可以多实现; *c:接口与接口 *继承关系,可以单继承,也可以多继承 */ interface InterA { public abstract void printA(); } interface InterB { public abstract void printB(); } interface InterC extends InterB,InterA { public abstract void printC(); } //class Demo implements InterA,implements InterB { //这么做不允许,是非法的; class Demo implements InterA,InterB { public void printA(){ System.out.println("printA"); } public void printB(){ System.out.println("printB"); } }

抽象类和接口的区别

/* A:成员区别 *抽象类 *成员变量:可以是变量,也可以是常量; *构造方法:有 *成员方法:可以抽象,也可以非抽象; *接口 *成员变量:只能是常量; *成员方法:只可以是抽象 B:关系区别 *类与类 :继承:单继承,多层继承; *类与接口:实现:单实现,多实现 *接口与接口:继承:单继承,多继承 C:设计理念区别: *抽象类:被继承体现的是"is a"的关系,抽象类中定义的是该继承关系的共性功能; *接口:被实现体现的是"like a"的关系,接口定义的是继承体系的扩展功能; */

案例演示

/*案例演示 *动物类:姓名,年龄,吃飯,睡觉; *猫和狗 *动物培训接口:调高 */ class Test2_Animal { public static void main(String[] args) { Cat c = new Cat("加菲",8); c.eat(); c.sleep(); System.out.println(c.getName()+"的年龄是:" + c.getAge()); System.out.println("--------"); JumpCat jc = new JumpCat("跳高猫",3); jc.eat(); jc.sleep(); jc.jump(); System.out.println(jc.getName()+"的年龄是:" + jc.getAge()); } } abstract class Animal { private String name; private int age; public Animal(){}; public Animal(String name,int age){ = name; this.age = age; } public void setName(String name){ = name; } public String getName() { return name; } public void setAge(int age){ this.age =age; } public int getAge(){ return age; } public abstract void eat(); public abstract void sleep(); } interface Jumping { public abstract void jump(); } class Cat extends Animal { public Cat(){}; public Cat(String name,int age){ super(name,age); } public void eat(){ System.out.println("猫吃鱼"); } public void sleep(){ System.out.println("侧着睡"); } } class JumpCat extends Cat implements Jumping { public JumpCat(String name,int age){ super(name,age); } public void jump(){ System.out.println("猫跳高"); } } class Dog extends Animal { public Dog(){}; public Dog(String name,int age){ super(name,age); } public void eat(){ System.out.println("狗吃肉"); } public void sleep(){ System.out.println("趴着睡"); } } class JumpDog extends Dog implements Jumping { public JumpDog(String name,int age){ super(name,age); } public void jump(){ System.out.println("狗跳高"); } }


    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/31793.html

    分享给朋友:

    “我的世界如何显示位置坐标 java” 的相关文章

    **解析cn2线路的美国vps:为什么它是你的最佳选择?**

    ---##cn2线路的美国vps,为什么它如此受欢迎?在数字化时代,VPS(虚拟私人服务器)已经成为企业和个人用户不可或缺的工具。无论是用于网站托管、游戏服务器搭建,还是作为企业数据中转站,VPS的功能和性能直接影响用户体验。在众多VPS服务中,"cn2线路的美国vps"凭借其独特的优势,迅速成为市...

    RackNerd 密码管理与安全指南:保护您的账户安全

    RackNerd 密码管理与安全 在探讨RackNerd的密码管理与安全之前,了解这个主机商的背景有助于我们更好地理解其服务的重要性。RackNerd成立于美国,专注于提供多种主机服务,包括虚拟主机、KVM VPS、Hybrid Dedicated Servers和独立服务器租用等。这些服务非常适合...

    宝塔面板安装指南:轻松搭建与管理云服务器

    宝塔面板是一款专为服务器运维设计的工具,以其简单易用的操作界面受到广泛欢迎。我在使用云服务器建站时,发现宝塔面板让繁琐的服务器管理变得轻松自如。它支持一键安装LAMP和LNMP环境,用户可以在数分钟内搭建出一个完整的网站环境,而且它还集成了监控、数据库管理、FTP等多种功能,真是一个多面手。 无论是...

    甲骨文云免费套餐与ARM CPU优势解析

    甲骨文云(Oracle Cloud)是一个强大的云服务平台,近年来受到了越来越多用户的关注。我自己也曾经探索过这个平台,在这里我想和大家聊聊甲骨文云的免费套餐,这对中小企业以及开发者来说真的是一个不错的选择。免费的套餐不仅简化了入门程序,也为新用户提供了足够的资源来尝试不同的云服务。 甲骨文云的免费...

    轻云互联:助力企业数字化转型的云计算解决方案

    轻云互联是隶属于广州轻云网络科技有限公司的云计算服务提供商。自成立以来,轻云互联专注于云计算领域,提供一系列全方位的一体化解决方案。这些解决方案涵盖了云计算产品、租用托管服务、云服务器、裸金属服务器、云虚拟主机以及游戏云服务等。走进轻云互联,你会发现这里不仅是一个技术创新的平台,更是一个通过边缘计算...

    VPS搭建:从选择提供商到后续管理的全面指南

    什么是VPS搭建? 了解VPS搭建的第一步是弄清楚VPS的定义。VPS,全称为虚拟专用服务器,是将一个物理服务器划分成多个独立的虚拟服务器。每个VPS都具有自己的操作系统和资源,能够像独立服务器一样运行各种应用程序。这种方式提供了更高的灵活性和可控性,相比共享主机来说,用户能够自主安装软件,配置环境...