8. java 面向对象

一、面向对象特征

1. 封装

  • 方法就是一种封装
  • 关键字private也是一种封装
封装就是讲一些逻辑细节信息隐藏起来,对于外界不可见;外界只需调用我即可;
一旦使用了private进行修饰,那么本类当中仍然可以随意访问。但,超出了本类范围就不行了;
间接访问private成员变量,就是定义一对Getter/Setter方法;必须叫setXxx、getXxx命名规则;
对于Getter来说,不能有参数,返回值类型和成员变量对应;
对应Setter来说,不能有返回值,参数类型和成员变量对应;
对于基本类型当中的Boolean值,Getter方法一定要写成isXxx形式,而Setter不变
public class Student {
    private int age;
    String name;
    public void show(){
        System.out.println("我年龄"+age);
    }
    // 这个成员方法,专门用于向age设置数据
    public void setAge(int num){
        age = num;
    }
    // 这个成员方法,专门用于获取age数据
    public void setAge(int num){
        return age;
    }
}
public class Demo {
    public static void main(String[] args) {

    }

    public static void method(Phone param){
        System.out.println(param.name);
    }
}
// this关键字作用

当方法的局部变量和类的成员变量重名的时候,根据"就近原则",优先使用局部变量;如果需要访问本类当中的成员变量,需要使用格式->this.成员变量名

2. 继承

3. 多态

二、类和对象关系

1. 类

  • 类:是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。
  • 属性:该事物的状态信息
  • 行为:该事物能够做什么

2. 对象

? 是一类事物的具体实现,对象是类的一个实例,必然具备该类事物的属性和行为。

java类当中
 - 成员变量(属性)
 - 成员方法(行为)

注意事项:
    成员变量定义在类当中,方法外面
    成员方法需删除static

3. 对象的创建和使用

通常情况下,一个类并不能直接使用,需要根据类创建一个对象,才能使用。
1. 导包
    import 包名称.类名称;
    对于和当前类属于同一个包的情况,可以省略导包语句
2. 创建
    类名称 对象名 = new 类名称();
    Student stu = new Student();
3. 使用
    使用成员变量,对象名.成员变量名
    使用成员方法,对象名.成员方法名(参数)

4. 使用对象类型作为方法参数

// phone.java
package cn.test.obj;

public class Phone {
    int number;
    String name;
    public void call(String who){
        System.out.println(who +"带电话给奥巴巴");
    }
}
// Demo.java
package cn.test.obj;

public class Demo {
    public static void main(String[] args) {
        Phone ph = new Phone();
        ph.number = 18900000;
        ph.name = "apple";
        method(ph);
    }

    public static void method(Phone param){
        System.out.println(param.name);
    }
}

5. 使用对象类型作为方法返回值

// phone.java
package cn.test.obj;

public class Phone {
    int number;
    String name;
    public void call(String who){
        System.out.println(who +"带电话给奥巴巴");
    }
}
// Demo.java
package cn.test.obj;

public class Demo {
    public static void main(String[] args) {
        Phone two = new getPhone();
        System.out.println(two.number);
        System.out.println(two.name);
    }

    public static Phone getPhone(){
        Phone one = new Phone();
        one.number = 18900000;
        one.name = "apple";
        return one
    }
}

三、成员变量和局部变量区别

  • 定义位置不同

    • 成员变量:在方法外部,直接写在类中
    • 局部变量:在方法内部
  • 作用范围不同
    • 成员变量:整个类全都可以使用
    • 局部变量:只有方法当中可以使用,出了方法就不能再使用了
  • 默认值不同
    • 成员变量:有默认值,和数组一样
    • 局部变量:没有默认值;想使用,必须手动进行赋值
  • 内存位置不同
    • 成员变量:堆内存
    • 局部变量:栈内存
  • 生命周期不同
    • 成员变量:随对象创建而诞生,随对象被垃圾回收而消失
    • 局部变量:随方法进栈而诞生,随方法出栈而消失

四、构造方法

? 构造方法是专门用来创建对象的方法,当我们通过关键字new来创建对象时,其实就是在调用构造方法。

// 格式
public 类名称(参数类型 参数名称){
    方法体;
}
注意事项:
1. 构造方法的名称必须和所在的类名称完全一样,就连大小写也要一样
2. 构造方法不要写返回值类型,连void都不写
3. 如果没写构造方法,编译器会默认生成构造方法,没有参数、方法体什么都不做
4. 构造方法不能return一个具体的返回值
5. 构造方法也是可以重载的

public class Student{
    private String name;
    private int age;

    public Student(){
        System.out.println("构造方法执行!");
    }

    public Student(String name, int age){
        this.name = name;
        this.age = age;
        System.out.println("构造方法执行!");
    }

    public void setName(String name){
        this.name = name;
    }

    public int getName(){
        return name;
    }

    public void setAge(int age){
        this.age = age;
    }

    public int getAge(){
        return age;
    }
}
public class Demo {
    public static void main(String[] args) {
        // new对象就是在调用构造方法
        Student stu = new Student();
        // 打印->构造方法执行!
        Student stu2 = new Student("Helo", 10)
        System.out.println("姓名" + stu2.getName() + "年龄" + stu2.getAge());
        stu2.setAge(12);
    }
}

五、标准类

/*
    一个标准的类通常拥有下面四个组成部分:
    1. 所有成员变量都要使用private关键字休息
    2. 为每个成员变量编写一对Getter/Setter方法
    3. 编写一个无参数构造方法
    4. 编写一个全参数构造方法
    这个标准的类也叫 Java Bean
*/

public class Student{
    private String name;
    private int age;
    自动生成Geter/Setter:idea->顶部栏[Code]->Generate->Getter/Setter->把变量选中
    自动生成构造方法:idea->顶部栏[Code]->Generate->Constructor->Select None
    自动生成构造方法:idea->顶部栏[Code]->Generate->Constructor->把变量选中
}

public class Demo01{
    public static void main(String[] args){
        Student stu01 = new Student();
        stu01.setName("jone");
        System.out.println("姓名" + stu01.getName());
    }
}

原文地址:https://www.cnblogs.com/hq82/p/11658774.html

时间: 2024-10-05 10:26:14

8. java 面向对象的相关文章

2062326 齐力锋 实验四《Java面向对象程序设计Android开发》实验报告

北京电子科技学院(BESTI) 实 验 报 告 课程: 程序设计与数据结构  班级: 1623  姓名: 齐力锋 学号: 20162326 成绩: 指导教师: 娄嘉鹏/王志强 实验日期: 2017年5月26日 实验密级:非密级 预习程度: 优良 实验时间: 2 Hours 仪器组次: 必修/选修: 必修 实验序号: 04 实验名称:Java面向对象程序设计Android开发 实验内容 1.Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBI

java面向对象的核心思想

Java面向对象-抽象类与接口 1.Java final关键字的使用 package edu.tongji.fni; /*final关键字 * 1.final关键字在java中被称为完结器,表示最终的意思 * 2.final能声明类.方法.属性: * 使用final声明的类不能被继承 * 使用final声明的方法不能被重写 * 使用final声明的变量变成常量,常量是不可以被修改的 */ class People{ //前面加了final下面的类会报错 public void tell(){ }

JavaSE入门学习21:Java面向对象之接口(interface)(二)

一接口实现的多态 在上一篇博文:JavaSE入门学习20:Java面向对象之接口(interface)(一)中提到了接口的实现存在多态性,那么 这一篇主要就要分析接口实现的多态. 实例一 Test.java源文件代码: public class Test{ public static void main(String[] args){ //实现接口Singer Singer s1 = new Student("Amy"); s1.sing(); s1.sleep(); s1.study

第5篇-JAVA面向对象Ⅰ

第5篇-JAVA面向对象Ⅰ 每篇一句 :面向对象面向君,不负代码不负卿 初学心得: 代码虐我千百遍,我待代码如初恋 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-04-03| JAVA面向对象 Ⅰ] 1.JAVA作为一种面向对象语言,具有以下基本概念: ● 多态 ● 继承 ● 封装 ● 抽象 ● 类 ● 对象 ● 实例 ● 方法 ● 重载 2.面向对象 什么是面向对象?: 面向对象是一种编程思想 通俗的说:面向对象是一种思考问题的思维方式 为什么使用面向对象以及它的作用 计算机语

《Java面向对象编程第二版》今年出版以来获得读者一致好评。

<Java面向对象编程第一版>自2016年出版以来,承蒙读者们的厚爱,至今已经重印了二十多次,成为国内Java领域里的经典Java技术宝典.在当当网上获得了1500多条好评: http://product.dangdang.com/9186890.html?point=comment_point 应广大读者的要求,为第一版进行了升级,第二版融合了最新的Java8的语言特性,它继续为Java开发人员们提供丰富全面的技术支持和帮助.在京东网上读者们对第二版的好评如潮,一致认为这是Java开发人员必

java面向对象 泛型

这个第一篇知识梳理的博客,希望我可以坚持下去将知识进行总结. 这是在极客学院里看到的视频,目录如下,蛮清晰的.然后我将视频中所说再记忆下. java面向对象之泛型:认识泛型 Java SE 1.5的新特性,泛型的本质是参数化类型,可以代表任何数据类型. java面向对象之泛型:构造函数中使用 class Gen<T>{ private T value; Gen(T value){//构造函数中就泛型就不需要用尖括号了 this.value=value; } public void setVal

JavaSE入门学习24:Java面向对象补充

一Java中的Object类 Object类是所有Java类的父类,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类默认 继承Object类. public class Person{ // } //等价于 public class Person extends Object{ // } Object类中的方法,适合所有子类. 1)toString()方法 在Object类中定义有public String toString()方法,其返回值是String类型,描述当前对

Java程序设计 实验二 Java面向对象程序设计

北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计 班级:1353  姓名:李海空  学号:20135329 成绩:             指导教师:娄嘉鹏      实验日期:2015.5.7 实验密级:         预习程度:         实验时间: 仪器组次:          必修/选修:            实验序号: 实验名称:       Java面向对象程序设计 实验目的与要求:实验内容 1. 初步掌握单元测试和TDD 2.

java面向对象编程(七)--四大特征之多态

1.多态概念 多态性是对象多种表现形式的体现.比如我们说"宠物"这个对象,它就有很多不同的表达或实现,比如有小猫.小狗.蜥蜴等等.那么我到宠物店说"请给我一只宠物",服务员给我小猫.小狗或者蜥蜴都可以,我们就说"宠物"这个对象就具备多态性. java中的多态,就是指一个引用(类型)在不同情况下的多种状态.也可以理解成,多态是指通过指向父类的指针,来调用在不同子类中实现的方法.也可以理解为"一个接口,多个方法". 实现多态有两种

【Java面向对象基础(三)】面向对象思想

[喵"的Android之路][基础篇(三)][Java面向对象基础]面向对象思想 1 面向对象的WWH 1.1 What--什么是面向对象 首先,要理解“对象”.在Thinking in Java中提到“Everything is an object”,即万物皆对象.这里的“对象”指的是任何实体或者任何可以当作实体看待的“虚幻的事物”.比如现实中的人(男人.女人.老人.小孩而...).动物(大象.狮子.猴子...).桌子.凳子.汽车.ATM机等等,也可以使看不见摸不着的空气(氧气.二氧化碳.氮气