十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
代码如下:
在绥芬河等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站制作、网站设计 网站设计制作定制设计,公司网站建设,企业网站建设,品牌网站制作,全网整合营销推广,成都外贸网站建设,绥芬河网站建设费用合理。
abstract class DongWu {
public abstract void info();
}
class Bird extends DongWu {
@Override
public void info() {
System.out.println("我是一只鸟。");
}
}
class Fish extends DongWu {
@Override
public void info() {
System.out.println("我是一条鱼。");
}
}
public class App5 {
public static void main(String[] args) {
DongWu bird = new Bird();
bird.info();
DongWu fish = new Fish();
fish.info();
}
}
一、继承
通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类。已有的称为父类,新的类称为子类(父类派生子类,子类继承父类)。
(1)继承的优点:
①代码的可重用性;
②父类的属性的方法可用于子类;
③子类可扩展父类的属性和方法;
④设计应用程序变得更加简单。
(2)关键字“isa”用于判断父类和子类的继承关系是否正确。
(3)Java中继承的实现:
public class 子类extends 父类{}
(4)继承的单根性:在Java中一个类只能有一个父类;
传递性:一个Java类可以父类,父类也可以有父类。
(5)所有类的根类:
Object类,又叫基类或超类。
Object类是每个Java类的父类,要么是直接的父类,要么就是间接的父类。
Object类中的三个重要方法:
①public boolean equals(Objectx):检测两个对象是否相等。
该方法经常被重写。若两个对象通过该方法判断是相等的,那么两个对象的hashCode()方法应该产生相同的哈希码
②public String toString:该方法返回对象的字符串表示。
用字符串来表示对象有助于调试或测试。
③protected void finalize() throws Throwale:
该方法在对象将要被垃圾回收时调用。
(6)方法重写:
子类可以重写从父类继承的方法,从而允许子类添加或者改变父类中方法的行为。
该行为方法生在子类中,对父类方法重写。
子类重写父类方法时,北京北大青鸟认为必须遵循如下规则:
①子类的方法的返回值类型、方法名和形式参数列表必须和父类中的是相同的;
②访问修饰符必须不小于父类中的访问修饰符;
③子类中重写抛出的异常不能比父类中抛出的异常多。
总的来说:编译时看父类,运行时看子类。
继承,子类继承父类中所以的属性和方法,但是对于private的属相和方法,由于这个是父类的隐私,所以子类虽然是继承了,但是没有可以访问这些属性和方法的引用,所以相当于没有继承到。很多时候,可以理解为,没有继承。
多态:就是父类引用可以持有子类对象。这时候只能调用父类中的方法,而子类中特有方法是无法访问的,因为这个时候(编译时)你把他看作父类对象的原因,但是到了运行的时候,编译器就会发现这个父类引用中原来是一个子类的对像,所以如果父类和子类中有相同的方法时,调用的会是子类中的方法,而不是父类的。
题目有关回答如下,供参考:
4、this:当前对象的引用
super:当前对象的超(父)类对象的一个引用
5、继承是面向对象最显著的一个特性。
继承的意义:继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
定义继承:使用关键字 extends 来实现继承
6、多态(Polymorphism)按字面的意思就是“多种状态”,也是面向对象的一个特性。
允许将子类类型的引用赋值给父类类型的引用。
7、代码如下:
/**
* 父类(图形)
*
* @author qd
*
*/
abstract class Figure {
double area;
}
/**
* 求面积的接口
*
* @author qd
*
*/
interface Area {
public void getArea();
}
/**
* 三角形
*
* @author qd
*
*/
class Triangle extends Figure implements Area {
// 底
double bottom;
// 高
double high;
public Triangle(double bottom, double high) {
super();
this.bottom = bottom;
this.high = high;
}
@Override
public void getArea() {
area = bottom * high * 0.5;
System.out.println("三角形面积是:" + area);
}
}
/**
* 正方形
*
* @author qd
*
*/
class Square extends Figure implements Area {
// 边长
double length;
public Square(double length) {
super();
this.length = length;
}
@Override
public void getArea() {
area = length * length;
System.out.println("正方形面积是:" + area);
}
}
/**
* 圆
*
* @author qd
*
*/
class Circular extends Figure implements Area {
// 半径
double radius;
public Circular(double radius) {
super();
this.radius = radius;
}
@Override
public void getArea() {
area = Math.PI * radius * radius;
System.out.println("圆面积是:" + area);
}
}
public class Test {
public static void main(String[] args) {
// 三角形对象
Area triangle = new Triangle(3, 4);
triangle.getArea();
// 正方形对象
Area square = new Square(4);
square.getArea();
// 圆对象
Area circular = new Circular(2);
circular.getArea();
}
}
8、代码如下:
/**
* 球类
*
* @author qd
*
*/
class Ball {
// 私有成员变量半径
private double r;
public double getR() {
return r;
}
public void setR(double r) {
this.r = r;
}
}
/**
* 台球
*
* @author qd
*
*/
class Billiards extends Ball {
// 私有成员变量颜色
private String color;
public void setColor(String color) {
this.color = color;
}
// 输出信息
public void printMess(Billiards billiards,Ball ball) {
System.out.println("台球的颜色是:" + billiards.color + " 台球的半径是:" + ball.getR());
}
}
/**
* 公有测试类
*
* @author qd
*
*/
public class TestBall {
public static void main(String[] args) {
Ball ball = new Ball();
ball.setR(5);
Billiards billiards = new Billiards();
billiards.setColor("白色");
billiards.printMess(billiards,ball);
}
}
7题和8题测试如下: