面向对象思想:
面向对象是基于面向过程的一种编程思想。
面向过程:强调的是每一个功能的步骤
面向对象;强调对象,然后由对象去调用功能
面向对象的思想特点:
A:一种符号我们思考习惯的思想
B: 可以将复杂的事情简单化
c: 让我们从执行者变成了指挥者

类与对象的关系

A:属性(描述信息)
B:行为(做了什么)

java语言最基本的组成单位是类,所以,后面的学习过程中,我们是通过类来体现事物的

类:是一组相关的属性和行为的集合
对象:就是该类事物的具体体现
类:蔬菜
对象:苹果

类的定义:类是用来描述现实事物的
事物:
属性
行为
类如何和事物进行对应的呢?
类: 成员变量
成员方法
成员变量:和我们学习过的变量是一样的,有两个小区别。
位置不同:类中,方法外
初始化值:成员变量不需要给初始化值也可以使用,因为它有默认值
成员方法:和我们学习过的方法的定义是一样的,有一个小区别。
去掉了修饰符中的static关键字

需求:

定义学生类


学生事物:属性
行为
学生类
成员变量
成员方法

  package dx;public class Student {String name;//年龄int age;//成员方法//学习的方法public void study() {System.out.println("好好学习,天天向上");}//吃饭的方法public void eat() {System.out.println("学习饿了要吃饭");}
}}}

类的使用:
使用一个类,其实就是使用该类的成员。(成员变量和成员方法)
我们使用一个类成员,必须先有该类的对象。
即创建对象
格式:
类名对象名=new 类名();
对象如何访问成员?
成员变量:
对象名。成员变量
成员方法:
对象名。成员方法(.。。。);‘
使用

  package dx;public class StudentText {public static void main(String[] args) {Student s = new Student();System.out.println("姓名:"+s.name);System.out.println("年龄:"+s.age);System.out.println("------------");s.name="老八";s.age=88;System.out.println("姓名:"+s.name);System.out.println("年龄:"+s.age);System.out.println("------------");s.study();s.eat();}}

思考:我一开始随意命名的,然后我发现敲student 就红了,后来我改了和老四一样的,才可以了,可能这就是类开始不一样了,所谓的调用吧,先做了才理解,相当于这里开始命名也重要了吗?,所以建立包的时候无所谓,但是创建类的时候注意这个名字,虽然我现在还是很蒙蔽,但是可能后面就好了

从这里开始的时候就知道要命名一致,就没有乱其些名字。

手机类的定义和使用

package dx;public class Phone {String brand;int price;String color;public void call(String name){System.out.println("给"+name+"打电话");}public void sendMassage(String name){System.out.println("给"+name+"发短信");}
}

使用:


public class PhoneText {public static void main(String[] args) {//创建对象Phone p = new Phone();System.out.println("品牌"+p.brand);System.out.println("价格"+p.price);System.out.println("颜色"+p.color);System.out.println("------------");p.color="黑色";p.brand="iphone";p.price=8500;System.out.println("品牌"+p.brand);System.out.println("价格"+p.price);System.out.println("颜色"+p.color);System.out.println("------------");p.call("金老师");p.sendMassage("八嘎酱");}
}

成员变量和局部变量的区别:

  •  A:在类中的位置不同
    
  •      成员变量:在类中,方法外
    
  •      局部变量:在方法中或者方法声明上(形式参数)
    
  •  B:在内存中的位置不同
    
  •      成员变量:在堆内存
    
  •      局部变量:在栈内存
    
  •  C:生命周期不同
    
  •      成员变量:随着对象的创建而存在,随着对象的消失而消失
    
  •      局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
    
  •  D:初始化值不同
    
  •      成员变量:有默认值
    
  •      局部变量:没有默认值,必须先定义,赋值,最后使用
    

private关键字

A:private关键字:
a:是一个权限修饰符。
b:可以修饰成员(成员变量和成员方法)
c:被private修饰的成员只在本类中才能访问。
直接使用对象名访问成员变量,会存在数据的安全问题

  • 这个时候,我们就应该思考能不能让外界不要直接访问成员变量?

  • 如何实现呢?

  •  用private关键字
    
  • private:

  •  是一个修饰符
    
  •  可以修饰成员变量,也可以修饰成员方法
    
  •  被private修饰的成员只能在本类中被访问
    
  • 针对被private修饰的成员变量,我们会相应的给出getXxx()和setXxx()用于获取和设置成员变量的值,

  • 方法用public修饰

    案例

package dx;public class cla {String name;private int age;public void setAge(int a){if (a<0 || a>200){System.out.println("你给的年龄有误");}else {age= a;}}public int getAge(){return age;}public void show(){System.out.println(name+"****"+age);}
}
package dx;public class claText {public static void main(String[] args) {cla s = new cla();s.show();s.name="八嘎酱";s.setAge(32);s.show();}
}

面向对象特征三大特征
封装
继承

A:封装概述
是面向对象三大特征之一
是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。就像刚才说的年龄。
B:封装原则:
将不需要对外提供的内容都隐藏起来。
把属性隐藏,提供公共方法对其访问。
成员变量private,提供对应的getXxx()/setXxx()方法
C:好处:
通过方法来控制成员变量的操作,提高了代码的安全性
把代码用方法进行封装,提高了代码的复用性

This关键字

  • A: this:代表所在类的对象引用
  • 方法被哪个对象调用,this就代表那个对象
  • B: 什么时候使用this呢
  • 局部变量和成员变量重名

this:代表所在类的对象引用

  •  方法被哪个对象调用,this就代表谁。
    
  • 使用场景:
  •  就是用于解决成员变量被隐藏的问题。
    

构造方法
– 给对象的数据进行初始化
– 方法名与类名相同
– 没有返回值类型,连void都没有
– 没有具体的返回值

  • 构造方法的注意事项:

  •  A:如果我们没有给出构造方法,系统将给出一个默认的无参数构造方法供我们使用
    
  •  B:如果我们给出了构造方法,系统将不再提供默认的构造方法供我们使用。
    
  •      这个时候,我们如果还想使用无参数构造方法,就必须自己提供。
    
  •      我们推荐:自己给出无参数构造方法。
    
  •  C:构造方法也是可以重载的。
    
  • 给成员变量赋值的方式:

  •  A:通过setXxx()
    
  •  B:通过构造方法
    

标准的类代码和测试
A:类:
a:成员变量
b:构造方法
无参构造方法
带参构造方法
c:成员方法
getXxx()
setXxx()

B:给成员变量赋值的方式
a:无参构造方法+setXxx()
b:带参构造方法

标准的类代码和测试

package dx;public class xs {//成员变量private String name;private int age;//构造方法public xs() {}public xs(String name,int age){this.name = name;this.age = age;}//成员方法public void setName(String name){this.name = name;}public String getName(){return name;}public void setAge(int age){this.age = age;}public int getAge(){return age;}}
package dx;public class xsText {public static void main(String[] args) {xs s = new xs();s.setName("白熊");s.setAge(-33);System.out.println(s.getName()+"----"+s.getAge());xs s2 = new xs("白熊",33);System.out.println(s2.getName()+"---"+s2.getAge());}
}

java 面向对象1相关推荐

  1. java面向对象-------静态初始化块

    1.构造方法用于对象的初始化!静态初始化块,用于类的初始化操作,在静态初始化块中不能直接访问非static成员. package java面向对象; /** * 测试静态初始化块 */public c ...

  2. JAVA面向对象-----final关键字

    JAVA面向对象-–final关键字 1:定义静态方法求圆的面积 2:定义静态方法求圆的周长 3:发现方法中有重复的代码,就是PI,圆周率.1:如果需要提高计算精度,就需要修改每个方法中圆周率. 4: ...

  3. Java学习笔记二十五:Java面向对象的三大特性之多态

    Java面向对象的三大特性之多态 一:什么是多态: 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现. 现实中,比 ...

  4. 12 Java面向对象之多态

    JavaSE 基础之十二 12 Java面向对象之多态 ① 多态的概念及分类 多态的概念:对象的多种表现形式和能力 多态的分类 1. 静态多态:在编译期间,程序就能决定调用哪个方法.方法的重载就表现出 ...

  5. 猫抓老鼠-Java面向对象特点梳理

    我们先设计一个猫抓老鼠的小游戏: ⊙猫和老鼠都有名字和体重两种属性,猫有抓老鼠的方法,对应的老鼠则有逃跑的方法. ⊙首先游戏的结果是猫抓住了老鼠或者老鼠逃跑了,对于这两种情况,我们用体重来区分,若猫的 ...

  6. java面向对象特征及阐述,Java面向对象四个特征

    Java面向对象有四个特征:抽象.封装.继承.多态.其中封装.继承.多态又被称为Java的基本特征. 抽象: Java中会把客观事物抽象成一个类.类就是封装了数据以及操作这些数据的代码逻辑实体.用字符 ...

  7. 20155328 《Java程序设计》 实验二(Java面向对象程序设计) 实验报告

    20155328 <Java程序设计> 实验二(Java面向对象程序设计) 实验报告 单元测试 一.单元测试和TDD 编程时需理清思路,将编程需求等想好,再开始编.此部分可用伪代码实现. ...

  8. 第7篇-JAVA面向对象Ⅲ

    第7篇-JAVA面向对象Ⅲ 每篇一句 :任何值得去的地方,都没有捷径 初学心得: 温故而知新 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-04-09| JAVA面向对象 Ⅲ] 1.J ...

  9. 谈谈java面向对象之抽象,手把手带你搞定java面试之面向对象

    计算机语言晦涩难懂,打算利用通俗易懂的文字带领大家学习java基础.如果文中有什么错误的地方,欢迎大家在评论区指正,免得我误人子弟. Question:当面试JAVA开发岗位的时候,面试官最爱问的问题 ...

  10. java面向对象程序设计第三版_JAVA面向对象程序设计之创建型设计模式

    [本文详细介绍了JAVA面向对象程序设计中的创建型设计模式,欢迎读者朋友们阅读.转发和收藏!] 1 基本概念 1.1 什么是设计模式 设计模式( Design pattern )是一套被反复使用.多数 ...

最新文章

  1. Processing 状态量控制动画技巧
  2. 计算机科学与应用论文的素材,计算机专业学位论文范文最新资料汇集
  3. 把一个一维数组转换为in ()
  4. 迁移至Android3.0遇到一些问题
  5. Go语言的多态(Polymorphism)
  6. 存储服务器格式化恢复方法
  7. 《TextRank: Bringing Order into Texts》
  8. php codesniffer 代码规范,如何用PHP_CodeSniffer检查代码规范
  9. 一年级下册计算机教学计划,新人教版一年级数学下册教学计划
  10. Faas,又一个未来?
  11. 计算机网络复试面试题
  12. 调研分析-全球与中国冲刺计时系统市场现状及未来发展趋势
  13. 1694. 重新格式化电话号码[简单模拟]
  14. 数据建模-方法论及实施步骤
  15. 永远都不要轻言放弃,因为没有人会随随便便成功
  16. 点击按钮测试用例标题_输入框测试用例的思考点
  17. 视频格式转换(flv→mp4)
  18. PCB工程师,一些常见的DFM问题,你知道如何避免吗?
  19. PostgreSQL数据库sql查询如何获取汉字拼音首字母
  20. 【Android 进阶】仿抖音系列之列表播放视频(三)

热门文章

  1. 谈Incompatible JVM问题的原因与解决方法
  2. QQ在线交谈(客服)代码
  3. 考证不?真枪实弹的那种~CCSS-R培训开班啦!
  4. 中国改革开放30年创新人物--戴晔
  5. 也说拍拍贷无担保模式
  6. “SaaS加速器”赋能开发者-以产业平台助燃生态布局
  7. 阀门安装的10个注意事项
  8. North America - Greater NY 2012
  9. 《论文阅读》Structured Pruning Learns Compact and Accurate Models
  10. Linux一台服务器从其他服务器上同步时间(ntp时间服务器离线安装)