三大特点:继承、多态、封装;
Ⅰ、封装
⑴封装是指把对象的属性隐藏在对象的内部,不允许外部直接访问和修改。也是把过程和数据包围起来;
⑵封装的作用:①提高程序可复用性和可维护性②对象的数据封装特性还可以把对象的私有数据和公共数据分离开,保 护了私有数据,减少了可能的模块间干扰,达到降低程序复杂性、提高可控性的目的。
⑶实现封装的步骤:①把对象属性隐藏(设置类的成员变量使用private修饰符)②定义设置器③定义访问器④使用Eclipse完成封装
<span style="font-size:18px;">public class Car {
private String color="黑色";
private boolean running;
/**设置color属性值的设置器方法
* @param color 要设置的 color
*/
public void setColor(String color) {
this.color = color;
}
<pre name="code" class="java"> /**running属性的访问器方法
* @param running 要设置的 running
*/
public void setRunning(boolean running) {
this.running = running;
}
<pre name="code" class="java"> /**
* color属性的访问器的方法
* @return color 颜色参数
*/
public String getColor() {
return color;
}</span>
/** * @return running属性值,它代表汽车对象的行驶状态,true代表行驶中 */public boolean isRunning() {return running;}}编写主类,演示访问器与设置器的使用
<span style="font-size:18px;">public class Program {
public static void main(String[] args) {
Car whiteCar=new Car();//创建Car类的实例对象
whiteCar.setColor("红色");//修改该实例中color属性
whiteCar.setRunning(true);//设置car对象的行驶状态
System.out.println("color属性:"+whiteCar.getColor());
System.out.println("running属性:"+whiteCar.isRunning());
}
}
</span>
Ⅱ、继承
⒈继承是指从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。类和类之间的继承关系可以用UML符号表示,其中父类又叫超类或基类,子类又叫派生类 。以现实生活中理解“它是一种关系”,例如轿车是一种汽车,而汽车又是一种交通工具
2.语法如下:
[修饰符] class 类名 extends 父类名
3.例子如下:
Car类:
public class Car {
public String color ="黑色";//颜色
public int speed = 1;//速度
public int level;//档位
/**
* 换挡的方法
* @param num 档位参数
*/
public void gear(int num){
level=num;//档位
speed = 10*level*level;//变速
}
public void drive(){
System.out.println("我是一辆"+color+"的轿车");
System.out.println("现在以时速"+speed+"公里每小时的速度行驶中。");
System.out.println("车档位是:"+level+"挡");
}
}
SaloonCar类:
public class SaloonCar extends Car {
}
主类:
public class Program {
public static void main(String[]args){
SaloonCar whileCar=new SaloonCar();
whileCar.color="红色";
whileCar.gear(4);
whileCar.drive();
}
}
Ⅲ、多态
1.多态的特征是表现出多种形态,具有多种实现方式。或者多态是具有表现多种形态的能力的特征。或者同一个实现接口,使用不同的实例而执行不同的操作。通过父类类型的引用,我们可以定义多态数组,多态方法等。
2.多态方法就是数组使用父类声明,而数组中的元素都是子类的实例对象,他们有父类同名的方法,但方法体可以不一样
创建一个四边形类
public class Quadrangle {
public void draw(){
System.out.println("绘制自身图形");
}
}
创建一个正方形
public class Square extends Quadrangle {
@Override
public void draw(){
System.out.println("--------------------");
System.out.println("| |");
System.out.println("| 正方形 |");
System.out.println("| |");
System.out.println("| |");
System.out.println("--------------------");
}
}
创建一个长方形类
public class Rectangle extends Quadrangle {
@Override
public void draw(){
System.out.println("--------------------");
System.out.println("| |");
System.out.println("| 长方形 |");
System.out.println("| |");
System.out.println("| |");
System.out.println("--------------------");
}
}
创建一个平行四边形类
public class Parallelogram extends Quadrangle {
@Override
public void draw(){
System.out.println(" ----------------");
System.out.println(" / /");
System.out.println(" / 平行四边形 /");
System.out.println(" / /");
System.out.println(" / /");
System.out.println(" -----------------");
}
}
创建一个主类
public class Demo {
public static void main(String[] args) {
Quadrangle[] quadrangles = new Quadrangle[3];
quadrangles[0] = new Square();
quadrangles[1] = new Rectangle();
quadrangles[2] = new Parallelogram();
for (Quadrangle obj : quadrangles) {
obj.draw();
}
}
}