学习一时爽,一直学习一直爽
Hello,大家好,我是 もうり,一个从无到有的技术小白。
Java 是面向对象的高级编程语言,类和对象是 Java 程序的构成核心。围绕着 Java 类和 Java 对象,有三大基本特性:封装是 Java 类的编写规范、继承是类与类之间联系的一种形式、而多态为系统组件或模块之间解耦提供了解决方案。
万物皆是对象
面向对象有以下特点:
面向对象的编程语言主要有:C++、Java、C#等。
封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果属性不想被外界访问,我们大可不必提供方法给外界访问。但是如果一个类没有提供给外界访问的方法,那么这个类也没有什么意义了。
比如下面定义了Person的对象
public class Person {
// 私有变量
private String name;
private String idNum;
private int age;
// 公共方法
public int getAge(){
return age;
}
public String getName(){
return name;
}
public String getIdNum(){
return idNum;
}
public void setAge( int newAge){
age = newAge;
}
public void setName(String newName){
name = newName;
}
public void setIdNum( String newId){
idNum = newId;
}
}
new一个maoli对象
public class Maoli {
public static void main(String args[]){
Person maoli = new Person();
maoli.setName("maoli");
maoli.setAge(20);
maoli.setIdNum("12345");
System.out.print("Name : " + maoli.getName()+
" Age : "+ maoli.getAge());
}
}
OUT:
Name : maoli Age : 20
继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
继承可以通过extends和implements两个关键字实现继承
在Person对象中添加公开方法
public class Person {
// 私有变量
private String name;
private String idNum;
private int age;
// 公开方法
public Person(String myName, String myid,int myage) {
name = myName;
idNum = myid;
age = myage;
}
public int getAge(){
return age;
}
public String getName(){
return name;
}
public String getIdNum(){
return idNum;
}
public void setAge( int newAge){
age = newAge;
}
public void setName(String newName){
name = newName;
}
public void setIdNum( String newId){
idNum = newId;
}
}
public class Maoli extends Person {
public Maoli(String myName, String myid,int myage) {
super(myName,myid,myage);
}
public static void main(String args[]){
Person maoli = new Person("maoli","12345",20);
System.out.print("Name : " + maoli.getName()+
" Age : "+ maoli.getAge()+"\n");
System.out.println(maoli instanceof Person);
}
}
Name : maoli Age : 20
true
关于继承如下 3 点请记住:
多态是同一个行为具有多个不同表现形式或形态的能力。
比如我们说"宠物"这个对象,它就有很多不同的表达或实现,比如有小猫、小狗、蜥蜴等等。那么我到宠物店说"请给我一只宠物",服务员给我小猫、小狗或者蜥蜴都可以,那你到底要小猫还是小狗?
我们就说"宠物"这个对象就具备多态性。
// 抽象类
abstract class Animal {
abstract void eat();
}
public class Test {
public static void main(String[] args) {
System.out.println("调用 show 方法");
show(new Cat()); // 以 Cat 对象调用 show 方法
show(new Dog()); // 以 Dog 对象调用 show 方法
System.out.println("----------------------");
Animal a = new Cat(); // 创建一个a猫
a.eat(); // 调用的是 a猫的 eat
Cat c = (Cat)a; // c猫和a猫是同一种猫
c.work(); // c猫去工作
Animal b = new Dog();
b.eat();
Dog d = (Dog)b;
d.work();
}
public static void show(Animal a) {
a.eat();
// 类型判断
if (a instanceof Cat) { // 猫做的事情
Cat c = (Cat)a;
c.work();
} else if (a instanceof Dog) { // 狗做的事情
Dog c = (Dog)a;
c.work();
}
}
}
class Cat extends Animal {
public void eat() {
System.out.println("吃鱼");
}
public void work() {
System.out.println("抓老鼠");
}
}
class Dog extends Animal {
public void eat() {
System.out.println("吃骨头");
}
public void work() {
System.out.println("看家");
}
}
调用 show 方法
吃鱼
抓老鼠
吃骨头
看家
----------------------
吃鱼
抓老鼠
吃骨头
看家
好了,这就是今天的内容了,今天最后我有一句话要说: