第二章 面向对象的基础认知
2-1 介绍类与对象
理解生活中类和对象
介绍面向对象编程
使用Java创建类和对象
类和对象的关系
类是抽象的概念,是对象的模板
对象是具体的事物,是类的具体实例
面向对象编程
面向对象编程是利用编程方式体现出现实中类与对象
从已有现实的类中定义程序中的类(class)
从类(Class)创建(实例化)具体的对象(Object)
Java创建类的语法
类名要有直白意义,最好是英文
首字母要大写
不要数字开头,不要包含特殊字符
创建类的实例对象
new关键字是创建实例对象最重要的标志
对象的命名规制
类名要有直白意义,最好是英文
首字母要大写
不要数字开头,不要包含特殊字符
2-2 创建类与对象
package hwd;
import java.util.Scanner;
public class JavaWork {//创建类
public static void main(String[] args) {//主方法
JavaWork duoduo = new JavaWork();
JavaWork lucky = new JavaWork();
}
}
2-3 成员变量
成员变量就是隶属于对象的变量
成员变量用于保存对象的静态特征
同类型的不同对象拥有相同的成员变量,但值彼此独立
package hwd;
import java.util.Scanner;
public class JavaWork {//创建类
String name;
int age;
float weight;
public static void main(String[] args) {//主方法
JavaWork duoduo = new JavaWork();
duoduo.name = "多多";
duoduo.age = 6;
duoduo.weight = 13.5f;
JavaWork lucky = new JavaWork();
lucky.name = "Lucky";
lucky.age = 3;
lucky.weight = 10.2f;
System.out.println(duoduo.name + "今天" + duoduo.age + "岁了");
System.out.println(lucky.name + "体重" + duoduo.weight + "千克");
}
}
多多今天6岁了
Lucky体重13.5千克
2-4 方法的作用
什么是方法
方法是用于完成特定功能的整段代码
package hwd;
import java.util.*;
import java.text.*;
import java.sql.*;
import java.sql.Date;
class Dome{//创建类
public String isOddNumber(int num){
System.out.println("原始数字为:" + num);
if(num % 2 == 0){
return "偶数";
}else{
return "奇数";
}
}
public static void main(String[]args){//主方法
/* 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 + "是奇数");
}
*/
int a = 10;
Dome dome = new Dome();
String r1 = dome.isOddNumber(a);
System.out.println(a + "是" + r1);
int b = 5;
String r2 = dome.isOddNumber(b);
System.out.println(b + "是" + r2);
}
}
原始数字为:10
10是偶数
原始数字为:5
5是奇数
第3章 面向对象特征之封装
3-1 包-Package
把功能相似或相关的类组织在同一个包中
包也采用了树形目录的储存方式
通过包也可以限定类的访问权限
包的命名规范
包采用“逆域名法”进行命名,用“.”分割,单词全部小写
标准格式:域名后缀.组织机构名.项目[.模块名].包的职能
3-2 访问修饰符
访问修饰符用于控制类、成员变量、方法的访问范围
package hwd;
import java.util.*;
import java.text.*;
import java.sql.*;
import java.sql.Date;
class Dome{//创建类
public String name;
private void sayHello(){
System.out.println("Hello world!");
}
void sayGoodbye(){
System.out.println("Good bye!");
}
public static void main(String[]args){//主方法
Dome dome = new Dome();
dome.sayHello();
}
}
package hwd;
import java.util.Scanner;
public class JavaWork {//创建类
public static void main(String[] args) {//主方法
Dome dome = new Dome();
dome.name = "Lily";
}
}
Hello world!
3-3 面向对象特征之封装
面向对象三大特征
封装
继承
多态
封装
封装即隐藏功能的实现细节
利用对象与方法是实现封装的直接途径
良好的封装让代码更容易阅读与维护
3-4 对成员变量进行读写封装
package hwd;
import java.util.*;
import java.text.*;
import java.sql.*;
import java.sql.Date;
class Dome{//创建类
public String owner;
public String areaCode = "86";
private long moblieNumber;
public String getOwner(){
return this.owner;
}
public void setOwner(String owner){
this.owner = owner;
}
public String getAreaCode(){
return this.areaCode;
}
public static void main(String[]args){//主方法
}
}
package hwd;
import java.util.Scanner;
public class JavaWork {//创建类
public static void main(String[] args) {//主方法
Dome dome = new Dome();
//dome.owner = "老齐";
//dome.areaCode = "84";
dome.setOwner("老齐");
String owner = dome.getOwner();
System.out.println(owner);
String areaCode = dome.getAreaCode();
System.out.println(areaCode);
}
}
老齐
86
第4章 面向对象特性之继承和多态
4-1 面向对象特性之继承
package hwd;
public class Mark1 {
protected String title;
protected String color;
protected String movie;
public void description(){
System.out.println("型号" + title);
System.out.println("颜色" + color);
System.out.println("首次出现电影" + movie);
}
private void fire(){
System.out.println("利用手臂燃料泵射出火焰");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Mark1 mark1 = new Mark1();
mark1.color = "银灰色";
mark1.movie = "钢铁侠1";
mark1.title = "马克1型";
mark1.description();
mark1.fire();
}
}
型号马克1型
颜色银灰色
首次出现电影钢铁侠1
利用手臂燃料泵射出火焰
package hwd;
public class Hulk extends Mark1{
private void repair(){
System.out.println("弹射备件替换战损组件");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Hulk hulk = new Hulk();
hulk.color = "反浩克装甲";
hulk.title = "红色";
hulk.movie = "复仇者联盟3";
hulk.description();
hulk.repair();
}
}
型号马克1型
颜色银灰色
首次出现电影钢铁侠1
利用手臂燃料泵射出火焰
package hwd;
public class Mark85 extends Mark1{
private void createShield(){
System.out.println("利用纳米技术生成防御护盾");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Mark85 mark85 = new Mark85();
mark85.color = "马克85型";
mark85.movie = "红色";
mark85.title = "复仇者联盟4";
mark85.description();
mark85.createShield();
}
}
型号复仇者联盟4
颜色马克85型
首次出现电影红色
利用纳米技术生成防御护盾
4-2面向对象特性之多态
多态
多态是同一个行为具有多个不同表现形式或形态的能力
实现多态的关键是接口
接口时一个抽象的类型,只提供方法的定义
实现类是一个接口的具体实现,要实现每一个接口方法的功能
package hwd;
public interface Language {
public void voice();
}
package hwd;
public class French implements Language{
public static void main(String[] args) {
// TODO Auto-generated method stub
}
@Override
public void voice() {
// TODO Auto-generated method stub
System.out.println("Comment puis-je me rendre a lh pital");
}
}
package hwd;
public class Chinese implements Language{
public static void main(String[] args) {
// TODO Auto-generated method stub
}
@Override
public void voice() {
// TODO Auto-generated method stub
System.out.println("你好,有什么可以帮到您的");
}
}
package hwd;
public class CustomerService {
public Language contact(int areaCode){
if (areaCode == 86){
return new Chinese();
}else if (areaCode == 33){
return new French();
}else{
return new English();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Language language = new English();
language.voice();
Language language1 = new Chinese();
language1.voice();
CustomerService cs = new CustomerService();
Language language2 = cs.contact(86);
language2.voice();
}
}
package hwd;
public class Customer {
public static void main(String[] args) {
// TODO Auto-generated method stub
CustomerService customerService = new CustomerService();
Language language = customerService.contact(33);
language.voice();
}
}
Comment puis-je me rendre a lh pital
4-3 ArrayList列表类的使用
ArrayList是Java内置的数据集合,用于存储多个数据
ArrayList是数组替代品,提供了更多的数据操作方法
ArrayList几乎是每一个项目比用的类
package hwd;
import java.util.*;
public class ArrayListSample {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> bookList = new ArrayList<String>();
bookList.add("红楼梦");
bookList.add("西游记");
bookList.add("水浒传");
bookList.add("三国志");
bookList.add(0,"镜花缘");
System.out.println(bookList);
String bookName = bookList.get(2);
System.out.println(bookName);
int size = bookList.size();
System.out.println(size);
bookList.remove(2);
System.out.println(bookList);
bookList.remove(bookList.size() - 1);
System.out.println(bookList);
for (String book : bookList){
System.out.println("《" + book + "》");
}
}
}
[镜花缘, 红楼梦, 西游记, 水浒传, 三国志]
西游记
5
[镜花缘, 红楼梦, 水浒传, 三国志]
[镜花缘, 红楼梦, 水浒传]
《镜花缘》
《红楼梦》
《水浒传》