面向对象编程有哪些基础概念和设计模式?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1730个文字,预计阅读时间需要7分钟。
面向对象(OOP)是Java编程语言的核心概念。以下是面向对象学习的主要内容:
1. Java面向对象三条主线: * 1. 类及类的成员:属性(属性)、方法(方法)、构造器(构造器)、代码块(代码块)、内部类 * 2. 面向对象的三大特性:封装、继承、多态 * 3. 关键字:this、super、static、final、abstract
2. Java类及类的成员: * 属性:用于存储对象的属性值 * 方法:用于执行特定的操作 * 构造器:用于创建对象 * 代码块:用于初始化变量或执行一些代码 * 内部类:定义在类内部的类
3. 面向对象的三大特性: * 封装:将对象的数据和操作封装在一起,隐藏对象的内部实现细节 * 继承:允许一个类继承另一个类的属性和方法 * 多态:允许一个对象以多种形式存在,根据上下文动态调用不同的方法
4. 关键字: * this:指向当前对象 * super:指向父类对象 * static:表示静态成员,属于类,不属于对象 * final:表示最终的,不可修改的 * abstract:表示抽象的,不能被实例化
面向对象(上) java面向对象学习三条主线
* 1.java类及类的成员:属性、方法、构造器、代码块、内部类
* 2.面向对象的三大特征:封装,继承,多态
* 3.其他关键字:this,super,static,final,abstract,interface,package,import等
面向对象的三大特征
- 封装
- 继承
- 多态
面向对象的思想概述
-
类和对象是面向对象的核心概念
类是对一类事物的描述,是抽象的,概念上的定义
对象是实际存在的该类事物的每个个体,因此称为实例(instance)
在java中万事万物皆对象
package com.zx.oop;
/*
* 类和对象的使用
* 1.创建类,设计类成员
* 2.创建类的对象
* 3.通过对象.属性或对象.方法调用
*/
public class PersonTest {
public static void main(String[] args) {
//创建Person类的对象
Person pe=new Person();
//调用对象的属性和方法
//对象.属性
pe.name="Jack";
pe.isMale=true;
System.out.println(pe.name);
//对象.方法
pe.eat();
pe.sleep();
pe.spke("中国话");
}
}
class Person{
//属性
String name;
int age = 1;
boolean isMale;
//方法
public void eat() {
System.out.println("人可以吃饭");
}
public void sleep() {
System.out.println("人可以睡觉");
}
public void spke(String language) {
System.out.println("人可以说话,讲的话是"+language);
}
}
运行结果:
Jack
人可以吃饭
人可以睡觉
人可以说话,讲的话是中国话
类的多个对象之间的关系
在上面代码基础的pe.spke("中国话");的后面加上下面代码
//重新new一个对象
Person pe2=new Person();
System.out.println(pe2.name);//默认值为null
System.out.println(pe2.isMale);//默认值为false
//pe的对象地址赋值给pe3,所以指向的是堆里面的同一个实体
Person pe3=pe;
System.out.println(pe3.name);
pe3.age=99;
System.out.println(pe.age);//所以pe.age也是99
类中的属性(成员变量)和局部变量
属性(成员变量)和局部变量
-
相同点:
- 定义变量的格式是一样的
- 先声明,后使用
- 变量都有其作用域
-
不同点:
- 成员变量: 在类体内定义的变量称为成员变量,它的作用域是整个类,也就是说在这个类中都可以访问到定义的这个成员变量
- 局部变量:声明在方法内,方法形参,代码块内,构造器形参,构造器内部的变量
成员变量:在声明属性时,指明其权限,使用权限修饰符 局部变量:不可以使用权限修饰符
类的属性根据其类型都有自己的默认初始化值
成员变量: 整型(byte,short,int,long) 0 浮点型(float,double) 0.0 字符型(char) 0或'\u0000' 布尔型(boolean) false 引用数据类型:null 局部变量: 必须在声明的时候初始化值,不然会编译报错,形式参数需要调用的时候才赋值,所以形参没有编译错误
内存中加载的位置
成员变量:加载到堆空间中(非static) 局部变量:加载到栈空间中public class Demo10 { //成员变量 static int num=100; public static void main(String[] args) { System.out.println(num); add(); } //成员方法 public static void add(){ System.out.println("今天赚了"+num); } }public class Demo10 { public static void main(String[] args) { int i,j;//main方法里面定义的局部变量 for (i=1;i<10;i++){ for (j=1;j<=i;j++){ System.out.printf(j+"*"+i+"="+i*j+"\t"); } System.out.printf("\n"); } public void eat(){ String food="鸡腿"; System.out.print("李明喜欢吃"+food)//这里的food也是局部变量 } } }方法
package com.zx.oop;
/*
* 类中的方法声明和使用
* 比如 :Math类:sqrt(),random()
* Scanner类 :nextInt()
*/
public class UserTest {
public static void main(String[] args) {
User user=new User();
user.eat();
String where=user.getNation("中国");
System.out.println(where);
}
}
//用户类
class User{
//属性
String name;
int age;
boolean isMale;
/* 方法的声明
*
* 权限修饰符 返回值类型 方法名 (形参列表 ){
* 方法体
* }
*
* 返回值类型:为有或无,有的话就为其返回的数据类型,无的话写void
*
* 方法名:属于标识符,遵循标识符的规范和规则,"见名知意"
*
* 形参列表:方法可以声明0个,1个,或多个形参,以逗号分隔
*
* return关键字的作用:
* 使用范围:方法体内
* 作用:结束方法。针对有返回值类型,使用"return 数据"方法返回所要的数据
*
* 方法的使用中:
* 方法中可以调用当前类的属性或方法
* 方法
*
*/
//void 修饰的表示没有返回值的方法
public void eat(){
System.out.println("用户吃饭");
}
public void sleep(int hour){
System.out.println("用户休息了"+hour+"小时");
}
/*
* String表示返回的数据类型为String类型,也可以是其他类型,在方法体中用return关键字返回,
* 如果没有返回值就用void修饰,通常没有返回值的方法就不用return,只能用"return;"结束方法
*/
public String getName() {
return name;
}
//String nation是方法里面的形式参数
public String getNation(String nation) {
String info="我的国籍是"+nation;
return info;
}
}
写的博客是为了面试的时候快速复习,有的知识点疏漏了也可以通过博客查看,坚持学习,坚持写博客。
本文共计1730个文字,预计阅读时间需要7分钟。
面向对象(OOP)是Java编程语言的核心概念。以下是面向对象学习的主要内容:
1. Java面向对象三条主线: * 1. 类及类的成员:属性(属性)、方法(方法)、构造器(构造器)、代码块(代码块)、内部类 * 2. 面向对象的三大特性:封装、继承、多态 * 3. 关键字:this、super、static、final、abstract
2. Java类及类的成员: * 属性:用于存储对象的属性值 * 方法:用于执行特定的操作 * 构造器:用于创建对象 * 代码块:用于初始化变量或执行一些代码 * 内部类:定义在类内部的类
3. 面向对象的三大特性: * 封装:将对象的数据和操作封装在一起,隐藏对象的内部实现细节 * 继承:允许一个类继承另一个类的属性和方法 * 多态:允许一个对象以多种形式存在,根据上下文动态调用不同的方法
4. 关键字: * this:指向当前对象 * super:指向父类对象 * static:表示静态成员,属于类,不属于对象 * final:表示最终的,不可修改的 * abstract:表示抽象的,不能被实例化
面向对象(上) java面向对象学习三条主线
* 1.java类及类的成员:属性、方法、构造器、代码块、内部类
* 2.面向对象的三大特征:封装,继承,多态
* 3.其他关键字:this,super,static,final,abstract,interface,package,import等
面向对象的三大特征
- 封装
- 继承
- 多态
面向对象的思想概述
-
类和对象是面向对象的核心概念
类是对一类事物的描述,是抽象的,概念上的定义
对象是实际存在的该类事物的每个个体,因此称为实例(instance)
在java中万事万物皆对象
package com.zx.oop;
/*
* 类和对象的使用
* 1.创建类,设计类成员
* 2.创建类的对象
* 3.通过对象.属性或对象.方法调用
*/
public class PersonTest {
public static void main(String[] args) {
//创建Person类的对象
Person pe=new Person();
//调用对象的属性和方法
//对象.属性
pe.name="Jack";
pe.isMale=true;
System.out.println(pe.name);
//对象.方法
pe.eat();
pe.sleep();
pe.spke("中国话");
}
}
class Person{
//属性
String name;
int age = 1;
boolean isMale;
//方法
public void eat() {
System.out.println("人可以吃饭");
}
public void sleep() {
System.out.println("人可以睡觉");
}
public void spke(String language) {
System.out.println("人可以说话,讲的话是"+language);
}
}
运行结果:
Jack
人可以吃饭
人可以睡觉
人可以说话,讲的话是中国话
类的多个对象之间的关系
在上面代码基础的pe.spke("中国话");的后面加上下面代码
//重新new一个对象
Person pe2=new Person();
System.out.println(pe2.name);//默认值为null
System.out.println(pe2.isMale);//默认值为false
//pe的对象地址赋值给pe3,所以指向的是堆里面的同一个实体
Person pe3=pe;
System.out.println(pe3.name);
pe3.age=99;
System.out.println(pe.age);//所以pe.age也是99
类中的属性(成员变量)和局部变量
属性(成员变量)和局部变量
-
相同点:
- 定义变量的格式是一样的
- 先声明,后使用
- 变量都有其作用域
-
不同点:
- 成员变量: 在类体内定义的变量称为成员变量,它的作用域是整个类,也就是说在这个类中都可以访问到定义的这个成员变量
- 局部变量:声明在方法内,方法形参,代码块内,构造器形参,构造器内部的变量
成员变量:在声明属性时,指明其权限,使用权限修饰符 局部变量:不可以使用权限修饰符
类的属性根据其类型都有自己的默认初始化值
成员变量: 整型(byte,short,int,long) 0 浮点型(float,double) 0.0 字符型(char) 0或'\u0000' 布尔型(boolean) false 引用数据类型:null 局部变量: 必须在声明的时候初始化值,不然会编译报错,形式参数需要调用的时候才赋值,所以形参没有编译错误
内存中加载的位置
成员变量:加载到堆空间中(非static) 局部变量:加载到栈空间中public class Demo10 { //成员变量 static int num=100; public static void main(String[] args) { System.out.println(num); add(); } //成员方法 public static void add(){ System.out.println("今天赚了"+num); } }public class Demo10 { public static void main(String[] args) { int i,j;//main方法里面定义的局部变量 for (i=1;i<10;i++){ for (j=1;j<=i;j++){ System.out.printf(j+"*"+i+"="+i*j+"\t"); } System.out.printf("\n"); } public void eat(){ String food="鸡腿"; System.out.print("李明喜欢吃"+food)//这里的food也是局部变量 } } }方法
package com.zx.oop;
/*
* 类中的方法声明和使用
* 比如 :Math类:sqrt(),random()
* Scanner类 :nextInt()
*/
public class UserTest {
public static void main(String[] args) {
User user=new User();
user.eat();
String where=user.getNation("中国");
System.out.println(where);
}
}
//用户类
class User{
//属性
String name;
int age;
boolean isMale;
/* 方法的声明
*
* 权限修饰符 返回值类型 方法名 (形参列表 ){
* 方法体
* }
*
* 返回值类型:为有或无,有的话就为其返回的数据类型,无的话写void
*
* 方法名:属于标识符,遵循标识符的规范和规则,"见名知意"
*
* 形参列表:方法可以声明0个,1个,或多个形参,以逗号分隔
*
* return关键字的作用:
* 使用范围:方法体内
* 作用:结束方法。针对有返回值类型,使用"return 数据"方法返回所要的数据
*
* 方法的使用中:
* 方法中可以调用当前类的属性或方法
* 方法
*
*/
//void 修饰的表示没有返回值的方法
public void eat(){
System.out.println("用户吃饭");
}
public void sleep(int hour){
System.out.println("用户休息了"+hour+"小时");
}
/*
* String表示返回的数据类型为String类型,也可以是其他类型,在方法体中用return关键字返回,
* 如果没有返回值就用void修饰,通常没有返回值的方法就不用return,只能用"return;"结束方法
*/
public String getName() {
return name;
}
//String nation是方法里面的形式参数
public String getNation(String nation) {
String info="我的国籍是"+nation;
return info;
}
}
写的博客是为了面试的时候快速复习,有的知识点疏漏了也可以通过博客查看,坚持学习,坚持写博客。

