目录
面向对象的基础认识
2-1 介绍类与对象
2-2 IDEA 创建类与对象
2-3 成员变量
2-4 方法的作用
面向对象特性之封装
3-1 包-package
3-2 访问修饰符
3-3 面向对象特性之封装
3-4 对成员变量进行读写封装
面向对象特性之继承和多态
4-1 面向对象特性之继承
4-2 面向对象特性之多态
4-3 ArrayList 列表类的使用
面向对象的基础认识
2-1 介绍类与对象
2-2 IDEA 创建类与对象
2-3 成员变量
2-4 方法的作用
面向对象特性之封装
3-1 包-package
3-2 访问修饰符
3-3 面向对象特性之封装
3-4 对成员变量进行读写封装
面向对象特性之继承和多态
4-1 面向对象特性之继承
4-2 面向对象特性之多态
4-3 ArrayList 列表类的使用
面向对象的基础认识
理解生活中的类与对象 介绍面向对象编程 使用Java创建类与对象
2-1 介绍类与对象类和对象的关系:1. 类是抽象概念,是对象的模板
2. 对象是具体的事物,是类的具体实例
面向对象编程:1. 面向对象编程是利用编程方式体现出现实中的类与对象
2. 从已有现实的类中定义程序的类(class)
3. 从类(class)创建(实例化)具体的对象(Object)
Java创建类的语法:
public 类名{
// 类的内容
}
eg: 1. 类要有直白意义,最好是英文
2. 首字母要大写: Dog, BigDecimal
3. 不要数字开头,不要特殊字符
public Dog{
// 类的内容
}
创建类的实例对象
类 对象名 = new 类名();
Dog duoduo = new Dog() ;
Dog lucky = new Dog() ;
new关键字是创建实例对象最重要的标志
对象的命名规则
Person first = new Person () ;
Cup smallcup = new Cup () ;
注意 :
1. 对象名要有直白意义,最好是英文
2. 首字母要小写: sam, firstItem
3. 不要数字开头,不要特殊字符
2-2 IDEA 创建类与对象public class Dog {//创建类名
public static void main(String[] args) { //主方法
Dog duoduo = new Dog;
Dog lucky = new Dog;
}
}
2-3 成员变量
1. 成员变量就是隶属于对象的变量
2. 成员变量用于保存对象的静态特征
3. 同类型的不同对象拥有相同的成员变量,但值彼此独立
成员变量的定义:宠物犬具有姓名,年龄,体重等特征。
public class Dog {
String name;
int age;
float weight;
}
成员变量的使用:
一、
Dog duoduo = new dog();
duoduo.name = "多多";
duoduo.age = 6;
duoduo.weight = 13.5f;
Dog lucky = new Dog();
lucky.name = "多多";
lucky.age = 3;
lucky.weight = 10.2f;
二、
System.out.println(duoduo.name + "今天" + duoduo.age + "岁了") ;
System.out.println(lucky.name + "体重" + lucky.weight + "千克") ;
float weight
public static void main(String[] args) {//主方法
Dog duoduo = new Dog();
duoduo.name = "多多";
duoduo.age = 6;
duoduo.weight = 13.5f;
Dog lucky = new Dog();
lucky.name = "多多";
lucky.age = 3;
lucky.weight = 10.2f;
System.out.println(duoduo.name + "今天" + duoduo.age + "岁了") ;//输出信息
System.out.println(lucky.name + "体重" + lucky.weight + "千克") ;//输出信息
2-4 方法的作用
方法(Method)是用来完成某种特定功能的整段代码
int a = 10 ;
if (a % 2 == 0) {
System.out.println(a + "是偶数") ;
} else {
System.out.println(a + "是奇数") ;
}
int b = 5 ;
if (b % 2 == 0) {
System.out.println(b + "是偶数") ;
} else {
System.out.println(b + "是奇数") ;
}
public class MethodSample01 {
public String isOddNumber(int num) {
if (num % 2 == 0) { //如果num输入除于2为0,那么输出偶数
return "偶数";
} else { //如果num输入除于2不为0,那么输出奇数
return "奇数";
}
}
public static void main(String[] args){
int a = 10;
if (a % 2 == 0) { //如果a输入除于2为0,那么输出偶数
System.out.println(a + "是偶数");
} else { //如果b输入除于2不为0,那么输出奇数
System.out.println(a + "是奇数");
}
int b = 5;
if (b % 2 == 0) { //如果b输入除于2为0,那么输出偶数
System.out.println(b + "是偶数");
} else { //如果b输入除于2不为0,那么输出奇数
System.out.println(b + "是奇数");
}
}
}
面向对象特性之封装
3-1 包-package
特点:1. 把功能相似或相关的类组织在同一个包中
2. 包也采取了树形目录的存储方式
3. 通过包也可以限定类的访问权限
图示理解:
ui : 是界面的意思,代表的是包的职责
包的命名规范 :
1. 包名用"逆域名法"进行命名,用 " . " 分割 ,单词全部小写
2. 标准格式:域名后缀。 组织机构名。项目名[.模板名]. 包的职能
eg :
3-2 访问修饰符Java创建类的语法:
public class 类名 {
}
访问修饰符
import用于跨包来进行导入。
3-3 面向对象特性之封装封装: 1. 封装即隐藏功能的实现细节
2. 利用对象与方法是实现封装的直接途径
3. 良好的封装让代码更容易阅读与维护
用代码理解封装:假设公司让李四(小白)输入5个数,使这5个数升序排列,身为小白,于是张三(大神)曾经做过,便把类给张三用。
解析题目:李四将张三代码嵌入到自己的工程中(图1),但是李四并完全看不懂张三写的算法,but不重要,因为作为李四他只是一个使用者,会调用这个方法 public void sort(int a, int b, int c, int d, int e) 即可,作为当前的sort方法只需要插入五个数字便能在控制台中打印升序结果,一切都是由张三通过sort方法进行的封装,李四只需要创建一个全新的Java类Sorter,然后在sort的算法进行实例化,然后调用算法的sort方法,根据程序要求随意传入5个字(图2)。
1.
package com.imooc.objectproject.sample3;
//张三开发的排序算法类
public class Algorithm { //创建类名
/**
* 传入五个数,把控制台打印升序结果
* @param a 第一个数
* @param b 第一个数
* @param c 第一个数
* @param d 第一个数
* @param e 第一个数
*/
public void sort(int a, int b, int c, int d, int e) {
//冒泡排序算法
int [] arr = {a,b,c,d,e};
for(int i = 0; i < arr.length - 1; i++) {
for(int j = 0; j < arr.length - 1 - i; j++) {
if(arr[j] > arr[j+1]) {
int temp = arr[j];
}
}
}
for(int i = 0;i < arr.length; i++) {
System.out.print(arr[i] + " ");//输出结果
}
}
}
2.
package com.imooc.objectproject.sample3;
public class Sorter {//创建类名
public static void main(String[] args) {//主方法
Algorithm algorithm = new Algorithm();//对sort方法进行实例化
algorithm.sort(a:177,b:91,c:37,d:66,e:102);//调用sort方法
}
}
解析封装过程:作为李四来说实际上就输入了图2两句代码便完成了工作。其本质和猪肉变成火腿肠同理,图1 算法类Algorithm 相当于一个处理工厂,对于Algorithm 里面的处理过程并不关心,他只需要将数据传入后得出升序结果。意思就是张三对排序进行了封装(有点:把常见的排序方法单独的封装,只需要调用需要的内容;但有一天由更好的方法,张三只需在方法内部修改,作为使用者来说完全无感知,李四只需维护使用者的代图2,张三秩序维护服务提供者的代码图1,各司其职)。
3-4 对成员变量进行读写封装所谓封装也就是对象和方法隐藏类的实现的细节。
通过代码来说明对成员变量进行读写封装是说明意思。
package com.imooc.objectproject.sample3;
public class MobileNumber {
//c成员变量私有变化
// 1 related problem
public String owner; //代表手机的所用者
// 1 related problem
public String areaCode = "86"; //国家区号
public long mobilenumber; //手机号
//getter方法,getter方法读取成员变量的内容
//getter书写格式: public 成员变量类型get 成员变量名(), PS:首字母大写
public String getOwner() {
// this 关键词代表当前对象的...
return this.owner;
}
//setter方法,setter方法用于设置成员变量的内容
//setter书写格式:public void set 成员变量名(新的数据参数)
public void setOwner(String owner) {
this.owner = owner;
}
public String getAreaCode() {
return this.areaCode;
}
public long getMobileNumber() {
return mobileNumber;
}
public void setMobileNumber(long mobileNumber) {
this.mobilenumber = mobileNumber;
}
}
package com.imooc.objectproject.sample3;
public class MobileNumberTestor {//创建新类
MobileNumber mobilnumber = new MobileNumber();//对Mobile进行实例化,产生MobileNumber对象
//mobileNumber.owner = "老齐";//在mobileNumber中的成员变量进行设置
//mobileNumber.areaCode = "84";
mobileNumber.setOwner("老齐");
String owner = mobileNumber.getOwner();
System.out.println(owner);//输出信息
String areaCode = mobileNumber.getAreaCode();
System.out.println(areaCode);//输出信息
mobileNumber.setMobileNumber(133888888881);//输出信息
}
}
面向对象特性之继承和多态 4-1 面向对象特性之继承老齐
84
图例:面向对象特性之继承
图解:1
package com.imooc.objectproject.sample4;
public class Mark1 {//创建类
protected String title; //定义成员变量
protected String color; //定义成员变量
protected String moive; //定义成员变量
public void description() { //描述信息
System.out.println("型号: "+ title);//输出信息
System.out.println("颜色: "+ color);//输出信息
System.out.println("首次出现电影: "+ movie);//输出信息
}
private void fire() { //调用fire 方法
System.out.println ("利用手臂燃料迸射出火焰"); /输出信息
}
public static void main(String[] args) { //主方法
Mark1 mark1 = new Mark1(); //对Mark1进行实例化
mark1.color = "银灰色";//对Mark1进行赋值
mark1.movie = "钢铁侠1";//对Mark1进行赋值
mark1.title = "马克1型";//对Mark1进行赋值
mark1.description(); //调用mark1.description进行描述信息
mark1.fire(); //调用mark1.fire进行喷火
}
}
2.
package com.imooc.objectproject.sample4;
//extends关键字用于类的继承
//extends关键字后面是“父类”,extends关键字前是“子类”
//子类会继承父类的(default)/protected/public 修饰的成员变量与方法
public class Hulk extends Mark1{ //创建类 Hulk子类继承 Mark1父类
public static void main(String[] args) {//主方法
Hulk.hulk = new Hulk(); //对hulk进行实例化
hulk.title = "反浩克装甲";//对hulk进行赋值
hulk.color = "红色"; //对hulk进行赋值
hulk.movie = "复仇者联盟3"; //对hulk进行赋值
hulk.description(); //调用hulk1.description进行描述信息
}
}
3
package com.imooc.objectproject.sample4;
//extends关键字用于类的继承
//extends关键字后面是“父类”,extends关键字前是“子类”
//子类会继承父类的(default)/protected/public 修饰的成员变量与方法
public class Mark85 extends Mark1 { 创建类Mark85子类继承Mark1父类
private void createShield() {
System.out.println("利用纳米技术生成防御护盾")
public static void main(String[] args) {//主方法
Mark85 mark85 = new Mark85(); //对Mark85进行实例化
mark85.title = "马克85型"; //对Mark85进行赋值
mark85.color = "红色"; //对Mark85进行赋值
mark85.movie = "复仇者联盟4"; //对Mark85进行赋值
mark85.description(); //调用Mark85.description进行描述信息
mark85.createShield(); //调用Mark85.createShield进行描述信息
}
}
4-2 面向对象特性之多态
多态的特点:
eg : 通过程序模拟项目案例
package com.imooc.objectproject.sample5.system;
public class Chinese implements Language { //implements 即实现
@Override
public void voice() {//生成接口定义
System.out.println("你好,请问有什么可以帮到您的?");
}
}
package com.imooc.objectproject.sample5.system;
public class English implements Language {//创建类名
@Override
public void voice() {
System.out.println("Hi,may I help you?");
}
}
package com.imooc.objectproject.sample5.system;
public class CustomerService { //创建类名
public Language contact(int areaCode) {
if(areaCode == 86) {
return new Chinese();
}else if(areaCode == 33) {
return new English(); //if ...... else 封装
}
return null;
}
public static void main(String[] args, int areaCode86) {//主方法
Language language = new English(); //对English进行实例化
language.voice();//对language 进行调用
Language language1 = new Chinese(); //对 Chinese 进行实例化
language1.voice();//对language 进行调用
CustomerService cs = new CustomerService();
Language language2 = cs.contact(areaCode86);
language2.voice();//对language 进行调用
}
}
模拟介入客服中心的过程:
package System5.customer;
import com.imooc.objectproject.sample5.system.CustomerService;
import com.imooc.objectproject.sample5.system.Language;
public class Customer {
public static void main(String[] args) {
CustomerService customerService = new CustomerService();
Language language = customerService.cintact(areaCode:86);
language.voice();
}
}
Language :本题中的接口 Language language 而不是具体的类的名字(eg : English language)
4-3 ArrayList 列表类的使用package com.imooc.objectproject.sample6;
import java.util.ArrayList;
import java.util.List;
public class ArrayListSample { //创建类名
public static void main(String[] args) { //主方法
//泛型
List bookList = new ArrayList();
bookList.add("红楼梦");
bookList.add("西游记");
bookList.add("水浒传");
bookList.add("三国志");
bookList.add(index: 0,element: "镜花缘");
System.out.println(bookList); //输出信息
String bookName = bookList.get(2);
System.out.println(bookName); //输出信息
int size = bookList.size(); //进行实例化
System.out.println(size); //输出信息
bookList.out.println(bookList);
bookList.romove(index:bookList.size() - 1);
System.out.println(bookList); //输出信息
for(String book : bookLIST) {
system.out.println("《" + bookList +"》"); //输出信息
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)