面向对象相关知识点整理(1)

来源:互联网 发布:java 汉字转英文缩写 编辑:程序博客网 时间:2024/05/23 00:04

                                黑马程序员  

面向对象相关知识点整理(1)

------- android培训java培训、期待与您交流!----------

(一)知识点梳理

面向对象概述

1.面向过程
都是一步一步做,来解决问题.C
2.面向对象
基于面向过程,解决问题,找一个对象了完成,对象本身包含了过程.
3.举例:
洗袜子:
面向过程:拖了-->泡一泡-->扭一扭-->搓一搓-->漂洗-->晾干
找女朋友洗袜子:
面向对象:说两句好话.
煎饼果子:
面向过程:上网搜一下,哪家强?-->买家伙什儿-->买材料-->摊煎饼-->找个人试吃-->你就可以吃了
找摊煎饼大妈:
面向对象:嗯-->掏钱-->吃
找到那个对象 new
4.面向对象思想特点
是一种更符合我们思想习惯的思想--懒人的思想
可以将复杂的事情简单化
角色发生了转换,执行者-->指挥者 
5.面向对象思想三大特征
1.封装
2.继承
3.多态

对象和类

  我们学习计算机语言,那么计算机语言是干嘛的?
对现实世界的描述-->实现了信息化-->虚拟化 

B:我们如何描述现实世界事物的呢?
属性: 脸 ,眼镜 ,腿 ,腰  -->天生的  
功能: 爱旅游,爱音乐, 琴棋书画 -->后天的 

手机:
属性:像素,大小,价格,形状,内存,品牌,型号   iPhone6s
功能:玩游戏,拍照,打电话,发信息,看电影,上网,

成员变量--> 属性
成员方法--> 功能

学生: 
成员变量(属性):姓名,年龄,身高,性别,学号
成员方法(功能):学习,吃饭,睡觉,敲代码


C:Java中最基本描述事物的单位是类( 分类  ),Java中用class描述事物也是如此

class 分类,分门别类, 物以类聚 
定义类就是描述一类事物

定义类  {
成员变量
成员方法 
}

class Phone {
成员变量
像素,大小,价格,形状,内存,品牌,型号


成员方法
玩游戏,拍照,打电话,发信息,看电影,上网,

知识点问答

1:面向对象思想概述和举例
答:面向对象是区别于面向过程而言的。有执行者变成了指挥者。比如说做煎饼的大妈具有做煎饼的功能那么我们让大妈去做煎饼而不是自己去做,那就是面向对象。

2:类与对象分别是什么,举例说明
答:类:是对事物的描述需要体现属性和行为。对象:该类事物创建的实体,通过该对象调用具有的属性和行为。比如汽车就是对象,那么造车的图纸就是类。


3:如何定义一个类,类的组成
答:定义类其实就是定义类的属性和方法。


4:如何使用一个类的成员


答:
按照事物到类的过程一步步分析。


创建对象:
类名 对象名 = new 类名();
对象名.成员变量  
对象名.成员方法。
     person p = new person();  p.name p.work
5:模仿学生类和手机类写一个人类,并测试。//需求:描述一个人的类。
//分析:人的属性:名字,身高,性别,
//       行为:写敲工作,睡觉,洗衣服。其实这些都
class ArrTest14 {
public static void main (String [] args){
//测试人这个类
//创建对象
Person p = new Person();
//使用成员变量
          String name = p.name;
 int hight  = p.hight;
 String sex = p.sex;
 System.out.println("姓名是"+name+"身高是"+hight+"性别是"+sex);
 //使用成员方法
 p.work();
 p.sleep();
 p.wash();
      System.out.println();
}
}

class Person


{
//成员变量
String name = "小王";//
int hight  = 160;
String sex = "女";
//成员的行为
public void work(){
System.out.println("每天都会敲代码两个小时");
}
public void sleep(){
System.out.println("好的休息才有跟好的工作");
}
public void wash(){
System.out.println("每天穿干净的衣服显得人有精神");
}
}
--------------------------------
1:局部变量和成员变量的区别?
答:1.在类中的位置不同:成员变量定义在类中方法外,局部变量定义在方法中。  2.在内存中的位置不同:成员变量定义在堆内存中,局部变量定义在占内存中。 3,生命周期不同: 成员变量随类的加载而加载随类的消失而消失。局部变量随着方法的加载而加载随着方法的消失而消失。4.在内存中初始化不同:成员变量有初始化值0或null而局部变量没有初始化值。


2:形式参数分别为基本类型和引用类型的问题????????
3:匿名对象是什么?应用场景是什么?(理解)
答:匿名对象:就是没有名字的对象。
是对象的一种简化表示形式
匿名对象的两种使用情况:
对象调用方法仅仅一次的时候
作为实际参数传递
4:封装是什么?java中封装的体现有哪些?请举例说明。
答:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。


5:this关键字是什么?this关键字的应用场景?
答;方法被那个对象调用,this就代表那个对象。局部变量 隐藏成员变量时用。


(二)相关代码实现

(1)定义一个类


/*
女神类  
{
属性:
名字
年龄
三围
性别
功能: 
//走红毯 
//名言
//自拍 
}
class Godness{
//成员变量 
名字
String name;
年龄
int age;
三围
String sanWei; //"10,10,10"
性别
String sex;
//成员方法 
//走红毯 
public void show(){
syso();
}
//名言
public void say(String words){
syso( 女神 + name + 说: + words )
}
//自拍 
public void photo(int num){

syso(自拍+ num + 张)
}
}
private  私有,权限修饰符,可以修饰成员(变量和方法),通常来修饰成员变量,已保护成员变量数据安全.

封装:
1.使用private修饰成员变量
2.提供 getXxx/setXxx方法,对成员变量取值,赋值 
getAge()  setAge(int a)
getName()  setName(String n) 
*/
class GodnessTest{
public static void main(String[] args){
//创建女神对象 
Godness  g = new Godness();
// g.name ="李嘉欣";
// g.age = 30;
// 调用setAge方法来给age属性赋值 

// g.sanWei = "38,25,40";
// g.sex = "女";
g.setName("贾玲");
g.setSex("汉子");
g.setSanWei("100,100,100");


int a =30;
if (a > 0 && a < 100){
g.setAge(a);
}
System.out.println(g.getAge());
//调用成员方法 
// g.show();
// g.say("采臣,小心掉水里");
g.say("女神和女汉子 ?  ");
g.photo(9);
}
}
//定义女神类  
class Godness{
//成员变量 
private String name;//名字
private int age;//年龄  使用 private 保护age属性 
// GodnessTest.java:62: 错误: age可以在Godness中访问private
private String sanWei; //三围"10,10,10"
private String sex;//性别


//定义给age赋值的方法  
public void setAge(int age){  //a  30;
this.age = age;
}
public int getAge(){
return age;
}
public void setName(String name){  //a  30;
this.name = name;
}
public String getName(){
return name;
}
public void setSanWei(String sanWei){  //a  30;
this.sanWei = sanWei;
}


public String getSanWei(){
return sanWei;
}
public void setSex(String sex){  //a  30;
this.sex = sex;
}
public String getSex(){
return sex;
}
//成员方法 
//走红毯 
public void show(){
System.out.println("女神"+name +"走红毯,年龄是"  + age +",三围"+sanWei );
}
//名言
public void say(String words){
System.out.println( "女神" + name + "说:" + words );
}
//自拍 
public void photo(int num){
System.out.println("自拍"+ num + "张");
}
}


(2)学生类

/*
定义类 100% 格式:
class 类名 {
//成员变量
private ....
//构造方法 
//无参构造
//有参构造
//成员方法
//get /set 
//特有方法 
}

标准的学生类(讲解)
分析:
学生类 {
//成员变量 (属性)  --通常的叫法  属性
姓名
年龄
学号
//构造方法 
无参
有参

//成员方法 (行为)  --通常的叫法  方法
//get / set
成对儿的 

//特有方法
学习 
睡觉
打代码
}

游戏角色{
攻击值 fighting
血量值 blood
法力值 magic
经验值; exp
金币; 
元宝;
头戴;
戒指;
项链;
....
}
set方法是赋值的,并没有返回值,所以是不明确返回值的类型,所有使用void
setAge(int a){
this.age = a;
}
get方法是取值的,有返回值.所以是有返回值的,所以需求一个返回值类型
返回值类型 getXxx() {
return 返回值 ;
}
强类型语言 , 有值必然有类型 -->   数据类型  变量名 = 初始化值;
*/
class {


public static void main(String[] args){


System.out.println();




}
}



//定义类
class Student { 
//成员变量 
private String name;//姓名
private int age; //年龄
private String studyNum; //学号
//构造方法 
Student(){}  //无参
Student(String name, int age,String studyNum){  //有参
this.name = name;
this.age = age;
this.studyNum = studyNum;
}
//成员方法
//get /set 
public String getName(){
return this.name;
}
public void setName(String name) {
this.name = name;
}
public int getAge(){
return this.age;
}
public void setAge(int age) {
this.age = age;
}
//特有方法
public String getStudyNum(){
return this.studyNum;
}

public void setStudyNum(String studyNum ) {
this.studyNum = studyNum;

}
//特有
public void study(){
System.out.println("学习,学习,休息的时候也学习,根本停不下来");
}
public void eat(String food ){
System.out.println("吃"+ food + ",吃多了就撑着了");
}


public void sleep(){
System.out.println("睡觉,12点半之前睡就可以了,别再晚了....");
}
}

(3)小游戏

/*
A:案例演示
需求:猜数字小游戏(数据在1-100之间)

分析 : 
1.拿到 1-100之间的数 
random()   0.0-1.0  
转成int 
结果 +1 
   API (应用程序接口)
SDK
情绪
*/
import java.util.Scanner;
class GuessNum{
        public static void main(String[] args){
//拿到1.0-100 
// for ( int x =0; x<100; x++){
// System.out.println((int)(Math.random() * 100) + 1);
//
// }
int bingo = (int)(Math.random() * 100) + 1;


//猜数字,通过键盘录入,输入你猜的数字

Scanner sc = new Scanner(System.in);
System.out.println("猜吧,1-100之间,6次机会.....");
//次数,你怎么解决 ???
while (true){
int guess = sc.nextInt();
if ( guess == bingo){
System.out.println("恭喜你,中了!!!");
break; 
}else if ( guess > bingo){
System.out.println("你猜大了,继续努力....");
}else {
System.out.println("你猜小了,继续努力....");
}
}
}
}

0 0
原创粉丝点击