java语言基础入门——继承及多态
来源:互联网 发布:日本女朋友体验 知乎 编辑:程序博客网 时间:2024/05/17 01:00
一、继承
何为继承?java中定义的类如同现实中的人类一样,人有父亲有儿子,类也一样可以有父类和子类。子类通过关键字extends来继承父类的属性及方法。其中父类的私有属性和方法可以被继承,但不能被访问;父类的构造方法不能被继承(可以使用关键字super来调用父类的构造方法,例super(参数));父类的final方法在子类中不能被覆盖;
而子类可以拥有属于自己的属性及方法,且子类外加的属性和方法父类无法访问。子类对象属于子类也属于父类,父类对象只属于父类。可用关键字instanceof判断该变量所指向的对象是否属于该类,例如对象变名 instanceof 类名; 指向子类对象的父类变量属于子类,例如
父类 an=new 子类();an属于子类,an可以访问子类的方法,但是如果an访问的方法是子类复写的父类的,且父类中该方法是私有的,即使用private修饰的,则an只能访问父类的该方法。
二、多态
多态即为多种表现形式,方法的重写以及重载是多态的两种表现。重载,是指同一类中,具有相同的名称的方法,但方法的参数个数,顺序,类型不同的方法实现。重写是指子类具有和父类相同名称,返回值类型(也可以是返回值类型的子类),和形参列表;返回值类型不同时;子类重写的方法不能使用比被重写方法更严格的访问权限。静态方法不能被重写为非静态方法。final方法不能被重写。
三、抽象类及接口
抽象类是指类中含有抽象方法的类,抽象方法为只有定义没有方法体的方法。抽象类不能被实例化,抽象类的构造方法和static方法不能是抽象方法。抽象类用abstract修饰,抽象中的抽象方法必须被子类或子类的子类实现才能创建子类的对象。
接口为类中的所有方法都只有声明,没有方法体,用关键字interface修饰,接口不能有构造方法,一个类可以实现多个接口,用关键字implement实现。接口中的常量和方法只能用public修饰。
package inheritance;public class Employee { private String name; private int age; private double salary; static int number=1; public Employee(String name ,int age, double salary) {this.name=name;this.age=age;this.salary=salary;} public Employee(){ this("张三",18,2000.0); } public double getsalary() {return salary;}static int getnumber() {final int i=100; System.out.println(i);System.out.println("fulei");return number;}}
package inheritance;public class Manager extends Employee {private double bonus; public Manager(double bonus) {super("李四",30,4000);this.bonus=bonus;} public Manager () {this(3000);} public double getsalary() { return super.getsalary();} public static int getnumber() { System.out.println("zilei"); int i=10; System.out.println(i);return number;}}
package inheritance;public class TestEmployee {public static void main(String[] args) { Employee employee1=new Employee(); Employee manager1=new Manager(); System.out.println(employee1.getsalary()); System.out.println(manager1.getsalary()); System.out.println(manager1 instanceof Manager); System.out.println(manager1.getnumber());}}
package inheritance;public abstract class Shape {private double length;private double width;public Shape(){this(0,0);}public Shape(double length,double width) {this.length=length;this.width=width;}public double getlength() {return length;}public double getwidth() {return width;}public abstract double area();}
package inheritance;public class Triangle extends Shape{public Triangle() {this(0,0);} public Triangle (double num1,double num2) {super(num1,num2);}public double area() {return getlength()*getwidth()/2;}}
package inheritance;public class Rectangle extends Shape{ public Rectangle (double num1,double num2) {super(num1,num2);} public Rectangle () {this(0, 0);}public double area() {return getlength()*getwidth();}}
package inheritance;public class Judge {public double area(Shape shape){return shape.area();}}
package inheritance;public class TestShape {public static void main(String[] args) {Judge judge=new Judge();//System.out.println(judge.area(new Shape(3,4)));System.out.println(judge.area(new Triangle(3,5)));System.out.println(judge.area(new Rectangle(3,5)));}}
package inheritance;public interface Runner { public void run();}
package inheritance;public interface Constants { public static final int COLOR_RED=1; public void say();}
package inheritance;public class Car implements Runner,Constants {public static void main(String[] args) {Car car=new Car();car.run();car.say();}@Overridepublic void say() {System.out.println("车的颜色是:"+COLOR_RED);}@Overridepublic void run() {System.out.println("车会跑");}}
- java语言基础入门——继承及多态
- 黑马程序员—Java入门及Java语言基础组成
- Java基础入门-继承
- Java语言基础--继承
- java语言基础入门——多线程
- java语言基础入门——泛型
- Java基础—继承
- java语言基础入门——变量、数据及常量的介绍
- Java语言基础——第八回 继承
- java语言基础之继承
- 黑马程序员——java基础--java语言入门
- Java入门(二)——java语言基础
- 3、Java入门—继承
- java—基础篇——继承与多态
- Java基础——继承
- Java基础——继承
- Java基础——继承
- Java基础——继承
- 安霸(ambarella) s2l视频处理流程
- 模拟缓冲区方法MyBufferedReaderDemo()
- 字符串与数值、字符数组之间的转换
- [libevent]evsignal_process()
- 用openvswitch创建docker容器之间的vxlan网络
- java语言基础入门——继承及多态
- shell学习--[、test测试的使用
- java POI 实现合并单元格
- ios中safari不兼容JavaScript中Date转化为时间戳的问题
- 静态多态入门示例
- twoWay使用
- Python抓取网页内容
- XEN - Xen Project Beginners Guide
- Java正则表达式 预搜索(零宽断言)详解(精)