黑马程序员—java基础—面向对象

                                                                    ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

 

 

面向对象是java语言的基础,贯穿于java语言的全部过程。一谈到面向对象,脑海里闪现出一句话:万物皆对象。面向对象这里重要的知识点有三个,封装,继承,和多态。准备把面向对象这个模块分成五个大标题,即面向对象概念导入。封装,继承,和多态。面向对象运用。

 

一,面向对象导入

什么是面向对象:面向对象是基于面向过程的,面向过程是指实现一个功能,我们是功能的参与者,必须亲力亲为,关注每一个步骤和过程。而面向对象,则是强调对象的,面向对象就是创建一个实物类的实例,这个对象实现某个事物的功能,具体的实现过程不需要我们管,2:面向对象思想特点:
                                    A:符合我们思考的思想
                                    B:把复杂的事情简单化
                                    C:你从执行者变成了指挥者

 

类是一组属性和事物的集合,是一个抽象概念,对象则是这个抽象类事物的具体实例。一个类里面有很多的属性,属性在类里面用变量表示,事物的行为则用方法表示。成员变量:类中方法外的变量属于成员变量。

 

创建对象格式:

类名 对象名 = new 类名();

使用对象属性:

对象.属性名

使用对象方法

对象名.方法名();

 

成员变量和局部变量:

 

A:在类中的位置不同
  成员变量:在类中方法外
  局部变量:在方法定义中或者方法声明上,定义在语句中  for循环 定义在语句中,就在for循环语句中管用
 B:在内存中的位置不同
  成员变量:在堆内存
  局部变量:在栈内存
 C:生命周期不同  作用域不同
  成员变量:随着对象的创建而存在,随着对象的消失而消失
  局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
 D:初始化值不同
  成员变量:有默认初始化值
  局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。

 

能否成功创建对象,取决于构造方法:

A:构造方法概述和作用
创建对象,给对象中的成员进行初始化
B:构造方法格式特点
      a:方法名与类名相同
      b:没有返回值类型,连void都没有
      c:没有具体的返回值

构造方法注意事项:

      a:如果我们没有给出构造方法,系统将自动提供一个无参构造方法。
      b:如果我们给出了构造方法,系统将不再提供默认的无参构造方法。
      注意:这个时候,如果我们还想使用无参构造方法,就必须自己给出。建议永远自己给出无参构造方法
     C:给成员变量赋值的两种方式

      1,构造方法传参

      2,setXxx方法。(一般是由于成员属性私有化)

面向对象基本:一个标准的学生类代码:

/**
 *  学生类:
 *     成员变量:姓名 年龄  应该是被private修饰
 *	  构造方法:
 *	         无参的  
 *			 带参的  两个参数
 *	  成员方法:
 *	        setXxx();  getXxx();
 *			eat();     show();
 */
class Student{
	 //定义成员变量
     private String name;
	 private int age;
     //定义构造方法
	 //无参构造方法
	 public Student(){}
     //带两个参数的构造方法
	 public Student(String name,int age){
	     this.name = name;
		 this.age = age;
	 }
     //为成员变量提供公共的赋值方法
	 public void setName(String name){
	    this.name = name;
	 }
	 public void setAge(int age){
	    this.age = age;
	 }
	 //为成员变量提供公共的获取方法
	 public String getName(){
	    return name;
	 }
	 public int getAge(){
	    return age;
	 }
     //普通方法
	 public void eat(){
	     System.out.println("人活着就为吃饭!");
	 }
     //学生属性的展示方法  
	 public void show(){
	    System.out.println(name+"-----"+age);
	 }
}
//测试类
class  StudentDemo{
	public static void main(String[] args) {
		//通过无参构造创建对象
		Student s = new Student();
		s.setName("梅梅");
		s.setAge(18);
		System.out.println(s.getName()+"---"+s.getAge());
        //通过带参构造创建对象
	    Student s2 = new Student("冬梅",19);
		s2.show();
	}
}

匿名对象:
 A:什么是匿名对象
              就是没有名字的对象
 B:匿名对象应用场景
              a:调用方法,仅仅只调用一次的时候。
             注意:调用多次的时候不适合.因为用一次就是创建了一个新的对象
             好处:匿名对象调用完毕之后就是垃圾,会被垃圾回收器回收.
             b:匿名对象可以作为实际参数传递   传递的时候实际是传递的内存中的地址值.
 案例演示

/*
  匿名对象:
     就是没有名字的对象

	 应用场景:
	   (1)通过匿名对象调用方法:
	      仅仅调用一次.调完就成了垃圾.
	   (2):匿名对象可以作为实际参数传递  
*/
class Student{
	String name;
	int age;

	public void show(){
	   System.out.println(name+"的年龄是:"+age);
	}
	public void eat(){
	   System.out.println("我就喜欢吃饭了!!最好是满汉全席");
	}
}
class StudentDemo{

	public void method(Student s){//new Student() 隐含了 Student s =  new Student();   
	   s.eat();
	}
}class NoNameDemo{
	public static void main(String[] args) {
		//创建对象
		/*
		Student s = new Student();
		s.name = "小芳" ;
		s.age = 18 ;
		s.show();
		//一个对象可以调一个方法多次
		s.eat();
		s.eat();

         System.out.println("--------------华丽分割线------------------");
		//匿名对象
        //每次调用都要创建新的对象.
        new Student().eat();
	    new Student().eat();
        System.out.println("--------------华丽分割线------------------");
		
		new Student().name = "张三";
        System.out.println(new Student().name);
        */
        StudentDemo  sd = new StudentDemo();
		
		//Student s = new Student();

		//sd.method(s);
		//用匿名对象作为实际参数传递
		sd.method(new Student());  
		
		
		new StudentDemo().method(new student());

	}
}


二,封装

1:封装概述
           是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
2:封装好处
           隐藏实现细节,提供公共的访问方式

           提高了代码的复用性
           提高安全性。
3:封装原则
           将不需要对外提供的内容都隐藏起来。
           把属性隐藏,提供公共方法对其访问。





B:封装概述
  是指隐藏对象的属性和实现细节&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值