java 面向对象1
面向对象思想:
面向对象是基于面向过程的一种编程思想。
面向过程:强调的是每一个功能的步骤
面向对象;强调对象,然后由对象去调用功能
面向对象的思想特点:
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相关推荐
- java面向对象-------静态初始化块
1.构造方法用于对象的初始化!静态初始化块,用于类的初始化操作,在静态初始化块中不能直接访问非static成员. package java面向对象; /** * 测试静态初始化块 */public c ...
- JAVA面向对象-----final关键字
JAVA面向对象-–final关键字 1:定义静态方法求圆的面积 2:定义静态方法求圆的周长 3:发现方法中有重复的代码,就是PI,圆周率.1:如果需要提高计算精度,就需要修改每个方法中圆周率. 4: ...
- Java学习笔记二十五:Java面向对象的三大特性之多态
Java面向对象的三大特性之多态 一:什么是多态: 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现. 现实中,比 ...
- 12 Java面向对象之多态
JavaSE 基础之十二 12 Java面向对象之多态 ① 多态的概念及分类 多态的概念:对象的多种表现形式和能力 多态的分类 1. 静态多态:在编译期间,程序就能决定调用哪个方法.方法的重载就表现出 ...
- 猫抓老鼠-Java面向对象特点梳理
我们先设计一个猫抓老鼠的小游戏: ⊙猫和老鼠都有名字和体重两种属性,猫有抓老鼠的方法,对应的老鼠则有逃跑的方法. ⊙首先游戏的结果是猫抓住了老鼠或者老鼠逃跑了,对于这两种情况,我们用体重来区分,若猫的 ...
- java面向对象特征及阐述,Java面向对象四个特征
Java面向对象有四个特征:抽象.封装.继承.多态.其中封装.继承.多态又被称为Java的基本特征. 抽象: Java中会把客观事物抽象成一个类.类就是封装了数据以及操作这些数据的代码逻辑实体.用字符 ...
- 20155328 《Java程序设计》 实验二(Java面向对象程序设计) 实验报告
20155328 <Java程序设计> 实验二(Java面向对象程序设计) 实验报告 单元测试 一.单元测试和TDD 编程时需理清思路,将编程需求等想好,再开始编.此部分可用伪代码实现. ...
- 第7篇-JAVA面向对象Ⅲ
第7篇-JAVA面向对象Ⅲ 每篇一句 :任何值得去的地方,都没有捷径 初学心得: 温故而知新 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-04-09| JAVA面向对象 Ⅲ] 1.J ...
- 谈谈java面向对象之抽象,手把手带你搞定java面试之面向对象
计算机语言晦涩难懂,打算利用通俗易懂的文字带领大家学习java基础.如果文中有什么错误的地方,欢迎大家在评论区指正,免得我误人子弟. Question:当面试JAVA开发岗位的时候,面试官最爱问的问题 ...
- java面向对象程序设计第三版_JAVA面向对象程序设计之创建型设计模式
[本文详细介绍了JAVA面向对象程序设计中的创建型设计模式,欢迎读者朋友们阅读.转发和收藏!] 1 基本概念 1.1 什么是设计模式 设计模式( Design pattern )是一套被反复使用.多数 ...
最新文章
- Processing 状态量控制动画技巧
- 计算机科学与应用论文的素材,计算机专业学位论文范文最新资料汇集
- 把一个一维数组转换为in ()
- 迁移至Android3.0遇到一些问题
- Go语言的多态(Polymorphism)
- 存储服务器格式化恢复方法
- 《TextRank: Bringing Order into Texts》
- php codesniffer 代码规范,如何用PHP_CodeSniffer检查代码规范
- 一年级下册计算机教学计划,新人教版一年级数学下册教学计划
- Faas,又一个未来?
- 计算机网络复试面试题
- 调研分析-全球与中国冲刺计时系统市场现状及未来发展趋势
- 1694. 重新格式化电话号码[简单模拟]
- 数据建模-方法论及实施步骤
- 永远都不要轻言放弃,因为没有人会随随便便成功
- 点击按钮测试用例标题_输入框测试用例的思考点
- 视频格式转换(flv→mp4)
- PCB工程师,一些常见的DFM问题,你知道如何避免吗?
- PostgreSQL数据库sql查询如何获取汉字拼音首字母
- 【Android 进阶】仿抖音系列之列表播放视频(三)