本篇博主要详细介绍的是面向对象的三大特性:继承、封装、多态的作用、语法及特点。
文章目录
目录
4.练习:创建一个圆类,属性半径,求周长,求面积,创建一个圆柱类,属性高,求体积,求表面积
2.练习:把宠物猫的属性都设置为私有属性为所有属性添加getter/setter方法,创建宠物猫的对象,为宠物猫设置姓名,性别,品种,体重。打印宠物猫的姓名,性别,品种,体重。
一、继承
1.继承的作用
子类可以继承父类的属性(全局变量)和行为(普通方法)。
2.继承的语法
在声明子类时需要在类名后 加extends 父类名
public class Student extends Person
}
3.继承的特点
1.子类拥有父类所能继承的所有属性和方法,并且子类还可以有自己的属性和方法
2.子类可以自己将父类的行为进行改变
3.一个父类可以有多个子类,一个子类只能有一个父类
4.一个子类可以有多层父类
5.所有的类都是继承于Object类(万事万物皆为对象),Object-基类。
6.当父类拥有有参构造方法时,子类必须拥有自己的子类构造方法,并且在代码第一行使用super关键字调用父类的有参构造,将父类的参数传递进去
4.练习:创建一个圆类,属性半径,求周长,求面积,创建一个圆柱类,属性高,求体积,求表面积
public class Circle {
double r;
public Circle(int r) {
this.r=r;
}
public double getLength() {
double c=2*Math.PI*r;
return c;
}
public double getA() {
double s=Math.PI*r*r;
return s;
}
}
public class Column extends Circle{
double h;
public Column(int r,int h) {
super(r);
// TODO Auto-generated constructor stub
this.h=h;
}
public double getArea() {
return getLength()*h+2*getA();
}
public double getVolumn() {
return getA()*h;
}
}
public class Test_circle {
public static void main(String[] args) {
// TODO Auto-generated method stub
Column circle = new Column(10,20);
System.out.println(circle.getArea());
System.out.println(circle.getVolumn());
}
}
二、封装
1.封装概念
类是方法和属性的封装,方法是语句的封装,将所有的属性用private进行修饰,将属性用get和set方法控制对其的访问和修改。
2.练习:把宠物猫的属性都设置为私有属性为所有属性添加getter/setter方法,创建宠物猫的对象,为宠物猫设置姓名,性别,品种,体重。打印宠物猫的姓名,性别,品种,体重。
public class Cat {
private String name;
private String sex;
private String brand;
private double height;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
}
public class Test4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Cat cat =new Cat();
cat.setName("Tom");
System.out.println(cat.getName());
cat.setBrand("蓝猫");
System.out.println(cat.getBrand());
cat.setSex("男");
System.out.println(cat.getSex());
cat.setHeight(23);
System.out.println(cat.getHeight());
}
}
3.练习:创建一个桌子类,该类中有名称、重量、宽度、长度和高度等私有属性,对属性实现封装,以及以下几个方法:b、double mianji(),计算桌面的面积c、void zhiCheng(),支撑物品
public class Table {
private String name;
private double height;
private double width;
private double weight;
private double length;
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
public double mianji() {
return length*width;
}
public void zhicheng(String sth) {
System.out.println("桌子支撑"+sth);
}
}
public class Test5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Table t1=new Table();
t1.setWidth(2);
t1.setLength(8);
System.out.println("面积为"+t1.mianji());
t1.zhicheng("果盘");
}
}
三、多态
一种状态多种表现形式,父引用指向子类对象
Shape shape = new Circle();
shape = new Triangle();
总结
本人学疏才浅,如有错误,还望见谅。