在javaSE中,面向对象有三个特征概分别是:封装、继承、多态。
一 、封装:
把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
封装的意义:在java中通过控制成员的访问权限实现封装,即使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。 适当的封装可以让代码更容易理解和维护,也加强了代码的安全性
封装的实现
package Qingdenggufuo;
public class Calculator {
private int a;//定义属性
private int b;
int c;
public void setA(int a){ //构造方法
this.a=a;
}
public int getA(){
return a; //返回到private int a;
}
public void setB(int b){
this.b=b;
}
public int getB() {
return b;
}
public void augment(){ //方法
c=a+b;
System.out.println(c);
}
public void reduce(){
c=a-b;
System.out.println(c);
}
public void ride(){
c=a*b;
System.out.println(c);
}
public void divide(){
c=a/b;
System.out.println(c);
}
}
package Qingdenggufuo;
public class vasssal {
public static void main(String[] args){
Calculator calculator=new Calculator(); //开辟新的class空间
calculator.setA(24);
calculator.setB(45);
System.out.println("请输出a+b:");
calculator.augment(); //调用calculator类中的方法
System.out.println("请输出a-b:");
calculator.reduce();
System.out.println("请输出a*b");
calculator.ride();
System.out.println("请输入a/b");
calculator.divide();
}
}
二 、继承
继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为
举例
1.在现实生活中的继承,可以理解为儿子继承了父亲的财产
2.我们知道丈夫、妻子、而且都有一些共性,有名字、年龄、性别、,而且他们都能够吃东西、走路、说话等等共同的行为,都可以称为继承体系。
继承意义
1.继承是单方向的,即派生类可以继承和访问基类中的成员,但基类则无法访问派生类中的成员。
2.在Java中只允许单一继承方式,即一个派生类只能继承于一个基类。
继承的实现
class Base{//基类、父类、超类
private int ma;//数据成员
public Base(int a){
this.ma = a;
}
}
子类(派生类):
class Derive extends Base{
private int mb;
public Derive(int a,int b){
super(a);//指定调用基类的构造函数、super要写在第一行
this.mb = b;
}
}
三 多态
Java中多态性指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式,java的多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编译时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象。
多态的定义
1.多态的“向上转型”、“向下转型”。
2.对象的多态性:父子类对象的转换
3.向上转型:子类对象变为父类对象,语法: 父类 父类对象 = 子类实例, 自动;
4.向下转型:父类对象变为子类对象,语法: 子类 子类对象 = (子类)父类实例,强制。
多态举例
向上造型
class A{
publicvoid print(){
System.out.println("A,public void print(){}");
}
class B extends A{
publicvoid print(){
System.out.println("B,public void print(){}");
测试
publicclass TestDemo{
publicstaticvoid main(String args[]){
A a = new B(); /
a.print();
**向下造型**
public void print(){
class B extends A{
public void print(){
public class TestDemo{
public static void main(String args[]){
B b = (B)a;
b.print();
结论:
1.定义一个父类类型的引用指向一个子类的对象既可以使用子类强大的功能,又可以抽取父类的共性。
2.父类类型的引用可以调用父类中定义的所有属性和方法,而对于子类中定义而父类中没有的方法,它是无可奈何的。
3.父类中的一个方法只有在在父类中定义而在子类中没有重写的情况下,才可以被父类类型的引用调用。
四 、访问权限修饰符控制范围