一、面向对象特征

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());
}
}

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

  1. JAVA面向对象

    JAVA面向对象 对象   我们生活中能看到能摸到的一切事物都是对象.在程序中模拟出生活中的所有东西万物皆对象   只要是对象--属性和行为(方法)   属性   对象有什么   例如:学生有姓名.学 ...

  2. 理解JAVA - 面向对象(object) - 属性,方法

    理解JAVA - 面向对象(object) - 属性,方法 多态的体现:    向上造型,父类接收子类对象:向上造型:    从父类角度看不到子类独有的方法:面向对象,人类认知世界的方式:生活中每天都 ...

  3. Java面向对象㈠ -- 封装

    Java的面向对象有三大特征:封装.继承.多态.这里主要对封装进行讲解. 封装可以理解为隐藏一个类的成员变量和成员函数,只对外提供需要提供的成员函数. Java的封装主要通过访问权限控制符:priva ...

  4. 谈谈Java面向对象的三大特性

    Java面向对象的三大特性就是指封装.继承.多态了. 一.封装: 概念:封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. (举例:笔记本电脑就是一个封装体,Java语言中最小的封装体就是函数 ...

  5. Java面向对象:接口

    Java面向对象之接口 什么是接口:接口是一种规范和标准,他们可以约束类的行为,是一些方法特征的集合 语法: [修饰符] interface 接口名 extends 父接口1,夫接口2....... ...

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

    实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...

  7. java基础1.0::Java面向对象、面向对象封装、抽象类、接口、static、final

    一.前言 一直以来都是拿来主义,向大神学习,从网上找资料,现在就把自己在工作中和学习中的所理解的知识点写出来,好记星不如烂笔头,一来可以作为笔记自己温习,二来也可以给走在求学之路的同学们一点参考意见, ...

  8. 20145212《Java程序设计》实验报告二 《 Java面向对象程序设计》

    20145212 实验二< Java面向对象程序设计> 实验内容 单元测试 三种代码 伪代码 百分制转五分制: 如果成绩小于60,转成"不及格" 如果成绩在60与70之 ...

  9. 20145213《Java程序设计》实验二Java面向对象程序设计实验报告

    20145213<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装,继承,多态 初步掌握UML建模 熟悉S.O. ...

  10. 20145206《Java程序设计》实验二Java面向对象程序设计实验报告

    20145206<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...

随机推荐

  1. 计算几何 val.1

    目录 计算几何 val.1 向量的点积 向量的叉积 一种奇怪的三角剖分求面积 凸包 点绕点旋转 后记 计算几何 val.1 本文并不是入门文章,供有高中数学基础的阅读 主要写一些重要的点和注意事项吧 ...

  2. C# -- 多线程向同一文件写入

    1. 多线程向同一文件写入Log. public delegate void AsyncLog(string str1, string str2); private void Test() { Con ...

  3. Servlet是什么?JSP和Servlet的区别。Servlet的生命周期。

    Servlet(Server Applet),全称Java Servlet, 是用Java编写的服务器端程序.而这些Sevlet都要实现Servlet这个借口.其主要功能在于交互式地浏览和修改数据,生 ...

  4. 控制台提示“Invalid string length”的原因

    控制台提示“Invalid string length”,浏览器直接卡掉,是为什么呢? 答:因为在写嵌套循环时,定义的变量重名了,内层和外层用了同一个i变量. -THE END-

  5. 1.1 菜单管理 ——MyRapid WinForm快速开发框架-功能介绍

    菜单表数据库设计 可以根据数据表取得树状目录,其中 版本和作者 可以分别对版本和修改人进行追溯 有兴趣的朋友可以尝试再添加一个收藏夹   也是比较常用的功能   这里我没有做这个功能 然后看下菜单编辑 ...

  6. sql server日期转换为dd-mon-yyyy和dd-MMM-yyyy这样的英文月份格式(27-Aug-2019)

    脚本: /* 功能:sql server日期转换为dd-mon-yyyy和dd-MMM-yyyy这样的格式 示例:27-Aug-2019 作者:zhang502219048 脚本来源:https:// ...

  7. linux 磁盘分区和挂载看这一篇就够了

    Linux fdisk 和 mount 命令操作指南,linux磁盘管理.新增磁盘.挂载新硬盘(linux运维入门) 首先列出文件系统的整体磁盘空间使用情况.可以用来查看磁盘已被使用多少空间和还剩余多 ...

  8. Linux中ps -elf和ps aux的区别

    一.前言 Linux下输入命令man ps查看: 加横线是 standard syntax   -- 比如ps -elf  不加横线是 BSD syntax   -- 比如ps aux To see ...

  9. Java之String类

    String类概述 java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如 "abc" )都可以被看作是实现此类的实例.其实就是说:程序当中所有的双引 ...

  10. js中获取当前url路径

    可以使用 window.location 获取当前页面url.以下是一些简单应用. <script> $(function(){ // 返回 web 主机的域名,如:http://127. ...