首页 / JAVA / Java基础学习08_面向对象01
Java基础学习08_面向对象01
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java基础学习08_面向对象01,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含10603字,纯文字阅读大概需要16分钟。
内容图文
面向对象(OOP)
一. 面向对象概念
oop( Object Oriented Programming ):面向对象编程
一种编程思想:编写代码来解决问题套路
常见的编程思想:1.面向对象oop: Object Oriented Programming
? 2.面向过程pop: Procedure Oriented Programming
- 用吃饭来解决面向对象和面向过程
- 解决问题:饿了 需要吃饭
- 面向过程:自己做饭:挖菜、洗菜、洗米、挑水、烧水、煮饭、炒菜、吃饭、洗碗
- 面向对象:找别人帮我做饭:点外卖、下馆子
- 面向过程:按动作把解决问题的整个过程分成多个步骤 逐个步骤去完成 最终解决问题使用的语言:C
- 面向对象:找具有帮助我解决问题功能的对象 指挥对象解决问题
使用的语言:java、C#
面向对象的优点:
- 程序员从执行者转换为指挥者
- 只需要找对对象 然后指挥对象来解决问题 简单方便
- 面向对象更符合现在人的思维方式
二.面向对象案例1
找到李大大 指挥李大大进行自我介绍
需要在电脑中创建一个李大大对象
给电脑描述人类型(数据(变量)+功能(方法))------>让电脑知道李大大这个数据的类型----->在电脑中创建一个人类型的对象------>让对象的变量与现实李大大的数据保持一致----->调用李大大自我介绍方法来解决问题
- 给电脑描述人这个类型
- 通过数据(用变量来表示)和功能(用方法来表示)
- 电脑根据描述 在电脑中创建一个人的模型(人类型的对象)
- 把对象的变量与现实李大大的数据保持一致
- 调用李大大模型的方法来解决问题
public class OOP01 {
public static void main(String[] args) {
//*** 1.给电脑描述人这个类型
//通过数据(用变量来表示)和功能(用方法来表示)
//*** 2.电脑根据描述 在电脑中创建一个人的模型(人类型的对象)
//创建对象的格式:类名 对象名 = new 类名();
Person p1 = new Person();
//*** 3.把对象的变量与现实习近平的数据保持一致
p1.age = 60;
p1.sex = '男';
p1.job="敲代码";
p1.name="小明";
//*** 4.调用习近平模型的方法来解决问题
p1.show();
}
}
//定义一个类 描述人的类型
class Person{
//通过变量来表示人类型具有的数据
int age;
String name;//String 字符串
char sex;
String job;
//通过方法来表示人类型具有的功能
//在面向对象中 修饰符static不用要了
public void smoke(){
System.out.println(name+"正在吸烟!");
}
public void show(){
System.out.println("我叫"+name+"我是"+sex+"生,今年"+age+"岁,职务是:"+job);
}
}
三.面向对象案例2
面向对象的套路:
/*
* 面向对象界问题:
* 1.创建类 用于描述一类事物
* 变量表示数据 方法来表示功能
* 2.根据类创建对象
* 格式:类名 对象名 = new 类名();
* 3.给对象的变量赋值
* 格式:对象名.变量名=值
* 4.调用对象的方法 解决问题
* 格式:对象名.方法名(参数);
*/
public class OOP01Test {
/*
* 面向对象界问题:
* 1.创建类 用于描述一类事物
* 变量表示数据 方法来表示功能
* 2.根据类创建对象
* 格式:类名 对象名 = new 类名();
* 3.给对象的变量赋值
* 格式:对象名.变量名=值
* 4.调用对象的方法 解决问题
* 格式:对象名.方法名(参数);
*/
public static void main(String[] args) {
//2.根据类创建对象
//对象:复杂数据:::对象是类的实例:::现实实物在电脑中的模型
Run r = new Run();
Run r1 = new Run();
Run r2 = r;//r和r2指向同一个对象
//Run类中定义了哪些变量和方法 Run类创建的对象就拥有哪些变量和方法
//3.给对象的变量赋值
r.color='红';
r.money=5000000;
r.logo="兰博基尼";
r.number="豫A88888";
r.speed=100;
r.zuoWei=2;
r2.show();//r只能更改r对应对象的变量 无法影响其他对象
//对象的变量有初始默认值:::字符串是null 数字是0 boolean是false
//4.调用对象的方法 解决问题
r.show();
r.run();
}
}
//1.创建类 用于描述一类事物
//类:代码的载体
//类:对一类事物的描述:::是创建对象的模板/图纸
//定义一个兰博基尼类 描述其功能
class Run{
String number;
String logo;
double money;
int zuoWei;
char color; //颜色
int speed; //速度方
//方法表示功能
public void show() {
System.out.println("车牌:"+number+",标志:"+logo+",价钱"+money+",座位数:"+zuoWei+",颜色:"+color);
}
public void run() {
System.out.println(logo+"兰博基尼正在以"+speed+"km/h速度行驶");
}
}
四.重载overload(重点)
重载:overload,一个类中几个方法名,参数不同。返回类型可以相同也可以不同。 当调用方法时,会自动判断给入数的类型,选取其中符合的方法。
同一个类中几个方法 基本功能相同 但参数列表不同
每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表
一个类中几个方法 方法名相同 参数列表不同的现象
重载的要求:
- 同一个类
- 被重载的方法必须改变参数列表(参数个数或类型不一样);
- 被重载的方法可以改变返回类型;
- 被重载的方法可以改变访问修饰符;
- 方法能够在同一个类中或者在一个子类中被加载;
- 无法以返回值类型作为重载函数的区分标准;
重载的方法和普通方法之间没有区别:互相之间无响应 只是区分时不是通过方法名区分 而是通过参数列表区分
public class OOP03Ovoerload {
public static void main(String[] args) {
//测试方法
//调用方法必须通过对象来调用
//重载的方法调用时 不能通过方法名来区分 只能通过参数列表来区分
Student s = new Student();//根据类创建对象
s.age = 18;
s.name = "韩梅梅";
s.show();//调用对象的方法
s.add(1,2);
s.add(1.1,2);
s.add(1);
s.add(1,1.1);
}
}
//写一个类:描述学生
class Student{
//变量来表示数据
int age; //年龄
String name; //姓名
//方法来表示功能
void show(){
System.out.println("学生:"+name+"今年"+age+"岁!");
}
//求和计算
//两个方法基本功能一致:都是求和 所以方法名一样 但参数不能相同
//方法的重载:同一个类中几个方法 基本功能相同 但参数列表相同
//重载的要求:
/*
* 1.同一个类
* 2.方法名必须相同
* 3.参数列表不同:参数类型不同,参数个数不同,参数顺序不同
* 重载的方法和普通方法之间没有区别:互相之间无响应 只是区分时不是通过方法名区分 而是通过参数列表区分
*/
void add(int a,int b){
System.out.println("int:int"+a+"+"+b+"="+(a+b));
}
void add(int a,double b){
System.out.println("int:double"+a+"+"+b+"="+(a+b));
}
void add(double a,int b){
System.out.println("double:int"+a+"+"+b+"="+(a+b));
}
void add(int a){
System.out.println("int"+a+"+"+ 1 +"="+(a+1));
}
}
五.成员变量和局部变量
//类声明
class 类名
{
类体的内容
}
//方法声明
方法头
{
方法体的内容
}
//方法头是由方法的类型.名称和名称之后的一对小括号以及其中的参数所构成
- class是关键字,用来定义类
- 成员:类的组成,类中直接定义的变量、方法
- 成员变量:类中直接定义的变量
- 成员方法:类中直接定义的方法
- 局部变量:方法中定义的变量
回答a和b的区别:
1.解释a是什么,b是什么
2.阐述a和b的区别
3.分条阐述a和b的区别
成员变量和局部变量的区别:
解释:
- 成员变量:类中直接定义的变量,方法体之外的变量。变量作用域是当前类,变量在创建对象时实例化
- 局部变量:定义在方法、构造方法或语句块中
- 局部变量在方法、构造方法、或者语句块被执行的时候,当他们执行完成之后,变量将会被销毁
- 访问修饰符(public、private)不能用于局部变量;
- 局部变量只在声明它的方法、构造方法或者语句块中可见
相同之处:都是变量 都是用于接受数据
不同之处:
1.定义位置不同:成员变量在类中方法外 局部变量在方法定义中或方法声明中。
2.作用范围不同:成员变量整个类 局部变量 在当前方法中。
3.是否有默认值:成员变量如果不赋值 有默认初始值 局部变量没有默认初始值 使用前必须显示赋值。
4.可用的修饰符不同:成员变量:可加范围修饰符static final 局部变量只能加final修饰符。
注意事项:
局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
public class OOPVariable {
int a;//类中直接定义的变量::成员变量
int b;//类中直接定义的变量::成员变量
void show(int c){//int c:在方法的参数列表中定义::局部变量
int d; //int d:在方法体中定义:::局部变量
//System.out.println(a+":"+d);
hai();//方法之间可以相互调用::为了执行所调方法的代码块
}
void hai() {//类中直接定义的方法::成员方法
System.out.println("a="+a);//成员方法可以直接调用定义变量
System.out.println("hai::::");
}
public static void main(String[] args) {
}
六.基本数据类型和引用数据类型
- 基本数据类型:8种:byte、short、int、long、float、double 、char类型的数据 ,对应的是数据
public class PrimitiveTypeTest {
public static void main(String[] args) {
// byte
System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);
System.out.println("包装类:java.lang.Byte");
System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);
System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);
System.out.println();
// short
System.out.println("基本类型:short 二进制位数:" + Short.SIZE);
System.out.println("包装类:java.lang.Short");
System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);
System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);
System.out.println();
// int
System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);
System.out.println("包装类:java.lang.Integer");
System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);
System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);
System.out.println();
// long
System.out.println("基本类型:long 二进制位数:" + Long.SIZE);
System.out.println("包装类:java.lang.Long");
System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);
System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);
System.out.println();
// float
System.out.println("基本类型:float 二进制位数:" + Float.SIZE);
System.out.println("包装类:java.lang.Float");
System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);
System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);
System.out.println();
// double
System.out.println("基本类型:double 二进制位数:" + Double.SIZE);
System.out.println("包装类:java.lang.Double");
System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);
System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);
System.out.println();
// char
System.out.println("基本类型:char 二进制位数:" + Character.SIZE);
System.out.println("包装类:java.lang.Character");
// 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台
System.out.println("最小值:Character.MIN_VALUE="
+ (int) Character.MIN_VALUE);
// 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台
System.out.println("最大值:Character.MAX_VALUE="
+ (int) Character.MAX_VALUE);
}
}
//代码结果:
基本类型:byte 二进制位数:8
包装类:java.lang.Byte
最小值:Byte.MIN_VALUE=-128
最大值:Byte.MAX_VALUE=127
基本类型:short 二进制位数:16
包装类:java.lang.Short
最小值:Short.MIN_VALUE=-32768
最大值:Short.MAX_VALUE=32767
基本类型:int 二进制位数:32
包装类:java.lang.Integer
最小值:Integer.MIN_VALUE=-2147483648
最大值:Integer.MAX_VALUE=2147483647
基本类型:long 二进制位数:64
包装类:java.lang.Long
最小值:Long.MIN_VALUE=-9223372036854775808
最大值:Long.MAX_VALUE=9223372036854775807
基本类型:float 二进制位数:32
包装类:java.lang.Float
最小值:Float.MIN_VALUE=1.4E-45
最大值:Float.MAX_VALUE=3.4028235E38
基本类型:double 二进制位数:64
包装类:java.lang.Double
最小值:Double.MIN_VALUE=4.9E-324
最大值:Double.MAX_VALUE=1.7976931348623157E308
基本类型:char 二进制位数:16
包装类:java.lang.Character
最小值:Character.MIN_VALUE=0
最大值:Character.MAX_VALUE=65535
- 引用数据类型:对象 根据类创建的对象 复杂的数据
- 在Java中,引用类型的变量非常类似于C的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特殊的类型。变量一旦声明之后,类型就不能被改变了。
- 对象、数组都是引用数据类型。
- 所有引用类型的默认值都是null
- 一个引用变量可以用来引用任何与之兼容的类型 Student student = new Student(“李华”);
- 引用类型变量在声明之后必须通过实例化开辟数据空间,才能对变量所指向的对象进行访问
Student student;//将变量分配一个保存引用的空间 student = new Student();//这条语句,首先执行new Student(),给student变量开辟数据空间,然后再执行赋值操作
内容总结
以上是互联网集市为您收集整理的Java基础学习08_面向对象01全部内容,希望文章能够帮你解决Java基础学习08_面向对象01所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。