面向对象简述(oop)

1 面向对象

面向对象是编程的一种思维方式。
分析思路:面对程序设计时,分析有什么对象,对象有什么数据(属性),对象有什么操作方法。

2 对象

万事万物都是对象
对象强调的是一个具体的个体
例如:杨树就不是对象,在小河边的那个杨树才是对象,强调的是个体。

2.1 对象的构成

2.1.1对象是由数据和操作构成

对象的状态是指对象的数据,对象的状态由变量表示,也叫对象的属性。
对象的行为是指对象的功能,对象的行为由方法表示。
例如:

学生对象{
    数据:姓名、成绩
    行为:听课,做作业
}
2.1.2对象的创建

对象是由类实例化时创建的,因此创建对象必须先定义类。
类是对象的模板,类中定义了什么属性和方法,由这个类实例化的对象就有什么属性和方法。
类是一次性定义,对象可以多次创建。

3 类

3.1 类的定义

类是具有相同的状态和相同的行为的一组对象的集合。

3.2 类和对象的关系

类和对象的关系就如同模具和用这个模具制作出来的物品之间的关系。一个类给出它的全部对象的一个统一的定义,而它的每个对象则是符合这种定义的一个实体(也称作实例),因此类和对象的关系就是抽象和具体的关系。

3.3 类的构成

类是由属性和方法构成的

3.4 类的创建

public class 类名 {
    //可编写0至n个属性
    数据类型 变量名1;
    数据类型 变量名2;
    
    //可编写0至n个方法
    修饰符 返回值类型 方法名(参数){
        执行语句;
    }
}

示例:

public class Student {
    //类的属性(类的状态)
    String name; 
    int score;
    String no;
    //类的方法(类的行为)
    public void play(){
        System.out.printf("我的名字是%s,我的成绩是%d,我的学号是%s",name,score,no);
    }
}

注意:

  • public类的类名必须和类所在文件的文件名一致
  • 如果不是public类,那么类名与类所在的文件名可以不一致
  • 类名的命名规范是:帕斯卡命名法

4 实例化对象

通过类创建对象的过程称为类的实例化。实例化的结果是产生了一个实例,实例也叫对象。

类名 对象名 = new 类名();

示例:

Student s1 =new Student();
Student s2 =new Student();

5 类和对象的区别

  • 类是对某一类事物的抽象描述,不是具体的个体
  • 对象是对某一事物的具体描述,是具体的个体

6 方法的重载

在同一个类中:同名不同参,与返回值无关。
示例:

public class Student{
    public void play(){
        
    }
    public int play(int time){
        return 0;
    }
}

7 构造方法

构造方法也叫构造函数,或者叫构造器

  1. 构造方法的方法名必须与类名相同
  2. 构造方法没有返回值,也不写void
    示例:
class Student {
    //构造方法
    Student(){

    }
}

7.1 构造方法的作用

为对象的属性初始化。

8 变量

变量分为局部变量和成员变量

8.1 局部变量

定义在方法中的变量
示例:

 public void sayHello(){
      int height = 20;//局部变量
}

8.2 成员变量

成员变量是类的属性,是定义在类内,方法外的变量。
示例:

class Student {
    String name;
    int score;
    String no;
}

9 面向对象的三大特性

9.1 封装

为了保护数据,用访问修饰符实现封装

9.1.1 访问修饰符
  • public:公共的
  • protected:受保护的
  • 默认 | default(什么都不写)
  • private:私有的
9.1.1.1 public

public修饰的属性没有访问限制,是最宽松的封装。
示例:

public class Person {
    public String name;//公有
}

name可以在任何地方被访问呢,也就是可以读和写
pubilc修饰类:类可以在任何地方被访问
public修饰属性和方法:属性和方法可以在任何地方被访问

9.1.1.2 protected

被protected修饰的属性或方法在子类中一定可以访问。无论子类是否与父类在一个包里。同包也可以访问。
示例:

package com.sunmer.tmp;

public class Father {
    protected int age;
    int weight;
}
package com.sunmer.tmp;

public class Sub1 extends Father{
    public static void main(String[] args) {
        Sub1 sub1 = new Sub1();
        sub1.age= 1;//可以访问
        sub1.weight = 1;//可以访问
    }
}
package com.sunmer.oop;
import com.sunmer.tmp.Father;
public class Sub2 extends Father {
    public static void main(String[] args) {
        Sub2 sub2 = new Sub2();
        sub2.age = 0;//可以访问
    }
}
9.1.1.3 private

private修饰的属性只能在类内被访问,类外无法访问,是最严格的封装。
示例:

public class Person {
    private String name;//私有
}

name属性只能在Person类的类内使用,类外无法使用。

注意:

private不能修饰类

private class Classinfo{//报错,private不能修饰类

}
public class Student {

}

private可以修饰类的成员,无论类的成员是什么。
示例:

public class Student {
    int age;
    private class Classinfo{//不报错,因为Cassinfo类是Student类的成员

    }
}

9.2 继承

9.2.1 继承的优点

  • 继承的出现提高了代码的复用性,提高软件开发效率。
  • 继承的出现让类与类之间产生了关系,提供了多态的前提。

9.2.2 继承的定义

在程序中,如果想声明一个类继承另一个类,需要使用extends关键字。

class 子类 extends 父类 {
    
}

9.2.3 继承的注意事项

9.2.3.1 类只支持单继承,不允许多继承
class A{} 
class B{}
class C extends A,B{}  // C类不可以同时继承A类和B类
9.2.3.2 多个类可以继承一个父类
class A{}
class B extends A{}
class C extends A{}   // 类B和类C都可以继承类A
9.2.3.3 允许多层继承
class A{}
class B extends A{}   // 类B继承类A,类B是类A的子类
class C extends B{}   // 类C继承类B,类C是类B的子类,同时也是类A的子类

9.3 多态

多态就是多种形态,多种形式。

9.3.1 多态的语法格式

多态的定义格式:就是父类的引用变量指向子类对象

父类类型  变量名 = new 子类类型();
变量名.方法名();
Pet pet = new Cat();
pet.toString();
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容