java面向对象

Java 是面向对象的编程语言,对象就是面向对象程序设计的核心。所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,它是一种具体的概念。对象有以下特点:

    对象具有属性和行为。
    对象具有变化的状态。
    对象具有唯一性。
    对象都是某个类别的实例。
     一切皆为对象,真实世界中的所有事物都可以视为对象。


面向对象的三大核心特性:封装,继承,多态;

封装:封装就是隐藏实现细节,仅对外提供访问接口。实现细节部份包装、隐藏起来的方法

封装之前:属性都可以直接访问和修改
class Person{
  String name;
  int age;
}

封装之后:
class Person{
  //属性是成员变量,私有化属性,使得其他对象不能直接访问属性
  private String name;
  private int age;
  //参数及方法内定义的变量是局部变量
  public void setName(String name){
  this.name = name;}
  public String getName(){
  return name;}
}
成员变量和局部变量的区别
a、在类中的位置不同
成员变量:在类中定义
局部变量:在方法中定义或者方法的参数
b、在内存中的位置不同
成员变量:在堆内存(成员变量属于对象,对象进堆内存)
局部变量:在栈内存(局部变量属于方法,方法进栈内存)
c、生命周期不同
成员变量:随着对象的创建而存在,随着对象的销毁而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
d、初始化值不同
成员变量:有默认初始化值,引用类型默认为null
局部变量:没有默认初始化值,必须定义,赋值,然后才能使用

继承

继承是面向对象三大特征之一
继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类

被继承的类称为父类(超类),继承父类的类称为子类(派生类)
通过继承可以实现代码重用
子类拥有父类非 private 的属性、方法。
子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
子类可以用自己的方式实现父类的方法。
语法:[访问权限] class 子类名 extends 父类名{
  类体定义;
}

示例:
public class Dog{
private String name;
private String sex;
public void eat(){System.out.println(“吃饭”);}
}
public class HomeDog extends Dog{
  //类的定义
}
public class HuskyDog extends Dog{
  //类的定义
}

多态

多态:父类的引用指向子类对象

例如:
class A{
  void fun1(){}
  void fun2(){}
}

class B extends A{
  void fun1(String a){} //重载fun1
  void fun2(){} //重写fun2
}

class C{
  public static void main(String[] args){
  A a = new B();
  a.fun1(); //这里会调用A类的fun1方法,由于向上转型,B的fun1(String a) 会被丢弃
  a.fun2(); //这里调用B的fun2方法,由于是new 的B对象,而B重写了fun2,所以会调用B的fun2
}
}

 

上一篇:函数指针


下一篇:如何用pandas对excel中的文本数据进行操作