面向对象

面向对象

  1. 面向对象分为3个阶段
    (1) New ,class 属性,方法,参数,返回值,this
    (2)封装 构造函数 static final 内部类
    (3)继承 super、abstract、interface

  2. new
    (1)User zhang=new User(); 体现的是堆栈管理模式
    User对象在栈内存 创建的对象zhang = 指针指引到 堆内存的实例
    并且调用堆内存的空构造函数,new还有指针含义

  3. new特点
    (1)new指的是单线程连接方式,new只能交互一个类对象的操作模式
    (2)所以new和C++指针函数用处有差异的

  4. class属性
    (1)属性访问性质是3种:
    a.私有属性: private int id=1; 只能当前类应用,类的属性大多数都是 private,因为封装的缘故
    b.共有属性: public int age=12; 都能调用
    c.受保护: Protected String name =“sun”;常用在继承,子类调用父 类的属性,往往和public很相似
    (2)注意:如果new对象调用的类和当前类不一个包,那么只能调用public的属性和方法,所以常用的就是private和public
    (3)属性的目的是供其他new实例化对象的调用和赋值的,当前值是初始化的值,未必是显示和调用的值

  5. 方法:C语言函数,一个程序块

  6. 方法的参数:
    (1)在一个类中,全局变量(类的属性),可以替代其价值
    (2)方法的参数是动态,灵活,可以没有可以有,如果有调用的顺序,类型,必须匹配

  7. 方法的返回值
    (1)ava的返回值必须匹配方法声明的类型的返回值
    (2)Java的返回值如果有,必须是一个,在方法程序执行的最后执行return
    (3)Return是关键字,有返回值需要加上返回的变量或者value
    (4)方法执行的每一个过程都需要一个匹配类型的返回值,否则语法错误,涉及到线程

  8. 类:工厂

    属性: 工厂共有共享的原材料

    构造函数: 工厂的传达室

    方法: 工厂的一个生产车间

    参数: 该车间 生产需要的原材料,根据不同的原材料,进行不同的生成

    返回值: 车间根据原材料生成后的产成品

  9. 方法的重载:方法名一样,参数肯定不一样,return可能不一样,java在调用的过程中,自动匹配调用参数方法

  10. This 关键字:针对的是方法调用全局变量,

    this.只能调用类下的属性,方法内的变量参数不能调用

    与this关键字呼应的是对象的就近原则

  11. 封装 setter getter,本身是一个方法,是给私有属性取值和赋值的一个方法,该方法可以限定取值范围

  12. 封装的特点:

    (1)取值和赋值的方法可以限定赋值的范围,给赋值或者取值一个判断限定其取值范围

    (2)属性不能直接调用,因为需要判断和限定取值范围,所以属性是private,但是赋值和取值的方法是public,所以封装的方法通常是public,也就是共有方法访问私有属性

    (3) Java和非java协议的技术体现融合

程序

  1. 代码

    //public class User 
    //			int age=12;
    //			String name="greey";
    //			String sex="男";
    		/*
    		 * 调用用户的类对象,并且赋值其初始值,
    		 * 首先实例化User对象
    		 */
    		//实例化User对象
    		//对象User:房产4s店    购房的合同、房本= 指向、引导指引    实例User:真实房屋( 进入真实房屋的比如钥匙);
    //		User对象在栈内存,创建的对象zhang        =   指针指引到      堆内存的实例,并且调用堆内存的空构造函数;
    User zhang=new User();	
    		//此时new对象zhang,没有丝毫赋值,所以执行的结果是User属性的初始值
    System.out.println(zhang.name);//greey
    		//赋值value,所以new对象的属性值改变了
    zhang.age=45;
    zhang.name="张三";
    zhang.sex="女";
    System.out.println(zhang.name);//改变后的值,可以理解为替换了zhang对象声明时候的初始值greey了,
    		//但是始终还是一个new对象。
    		//创建新的new对象
    User li=new User();
    li.name="李四";
    System.out.println(zhang.name+"-"+li.name+"-"+li.sex);
    		//张三-李四-男(li对象没有赋值sex的value所以显示的是还是原始User的初始值)
    		//但是zhang li是两个new对象了。
    
  2. 替换的案例

    //替换案例1
    
    import java.util.Scanner;
    public class String替换 {
         
    	//输入被替换的String
        private String input=null;	
    	/**
    	 * 输入一个合法存在的String,那么返回一个[]参数
    	 */
    	public String[] GetString() {
         
    		System.out.println("用户输入了一个存在的String,返回结果[]");
    		//测试,模拟用户输入的是被替换的String 是 y
    		input="y";  //又称为给全局变量赋值
    		String str[]= {
         "1","7","19"};
    		return str;
    	}
    	/**
    	 * 根据[]获取用户输入合法的位置,返回
    	 */
    	public int GetNumber(String[] str) {
         
    		System.out.println("用户输入了一个存在的替换位置,并且返回");
    		//匹配[] 来验证用户是否的位置是否合法
    		//测试,视为用户输入的替换位置是2
    		return 2;
    	} 
    	/**
    	 * 显示替换的结果
    	 * 需要第一步方法被替换的String参考,或许借助于当前类属性
    	 */
    	public String GetResult(int number) {
         
    		System.out.println("根据被替换的String:"+this.input+",根据替换的位置:"+number);
    		System.out.println("执行替换操作");
    		//返回最终替换后的结果,视为result是最终替换的结果。
    		return "result";
    	}
    	//以上是我对String替换的案例的面向对象方式的写法,写法非常众多的。
    	//在众多的写法中,哪个最正确,标准不是执行出结果,而是最终项目的维护和运行使用。
    	public static void main(String[] args) {
         
    //        Scanner s=new Scanner(System.in);
    		String替换 string=new String替换();
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值