zoukankan      html  css  js  c++  java
  • 【幻化万千戏红尘】qianfengDay06-java基础学习:重载、方法、类、对象、构造方法

    课程回顾:

    标识符

    数据类型

    变量

    分支

    循环

    方法

    eclipse创建项目project后必须先新建包package,有包才有类class

    今日内容:

    面向对象:是一种思想

    指导编程的思想

    起源于现实社会的认知

    面向过程思想:按照事件的发展流程来考虑事件的实现,注重过程

    面向对象思想:只关心涉及到的对象的特征(属性)和行为(方法)

    面向对象2大核心:

    1、类:类别、定义、模板、抽象的、一些共同拥有的属性(特征)和方法(行为/功能)

    2、对象:实实在在的事物,具体的

    所以类是概念性的定义,而对象是具体的事物

    类是模板,对象是根据模板生成的产品

    面向对象终极目标:消除重复代码

    面向对象三大特征:封装、继承、多态

    类:

    格式:

    [修饰符] class 类名

    {

    [属性/全局变量]

    [修饰符] 数据类型 变量名/属性名[=初始化];

    [方法]

    [修饰符] 返回值类型 方法名([形式参数列表])

    {

    实现特定功能的代码块;

    }

    }

    学生类:

    姓名、学号、性别、年龄

    对象:具体的

    对象的声明格式:

    类名 对象名;

    对象的实例化格式:

    对象名=new 类名();

    对象的创建格式:

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

    属性的使用:

    对象名.属性名[=赋值];

    方法的使用:

    对象名.方法名([实际参数]);

    属性的默认值:

    数值类型的都是:0

    boolean:false

    char:0

    引用类型:null

    在创建对象的时候,会默认的为属性赋值

    package com.qianfeng.demo1;

    //测试类/场景类

    public class Test01 {

    public static void main(String[] args) {

    //对象的声明--变量的声明

    Student stu1;

    //对象的实例化

    stu1=new Student();

    stu1.name="王麻子";

    stu1.age=18;

    stu1.no=16060090;

    stu1.sex='';

    System.out.println(stu1.name);

    stu1.study();//调用方法

    stu1.eat("豆腐");

    //练习:创建一个Person类,

    //并创建对象调用属性和方法

    }

    }

    package com.qianfeng.demo1;

    /**创建学生类*/

    public class Student {

    public int no;//学号

    public String name;//姓名

    public int age;//年龄

    public char sex;//性别

    //方法

    public void study(){

    System.out.println("学习是学生的天职");

    }

    public void eat(String food) {

    System.out.println("学生都喜欢吃:"+food);

    }

    }

    构造方法:创建对象并且对属性完成默认初始化,是一种特殊的方法

    构造方法的方法名只能是类名,并且没有返回值,连void都没有

    格式:

    [修饰符] 类名([形式参数列表])

    {

    代码块;

    }

    构造方法的调用:

    通过new 构造方法([实际参数列表]);

    构造方法的分类:

    1、隐式(默认)构造方法:系统默认提供无参的构造方法(一旦有了显示构造那么就不再提供)

    2、显式(自定义)构造方法

    构造方法只能通过new来调用

    重载的定义:

    相似功能的方法采用同一方法名

    规则:

    1、同一类中

    2、方法名相同

    3、形式参数列表不同(形式参数的数据类型和顺序和个数)

    构造方法能否重载?

    可以

    //练习:自定义一个类(Food),属性自定义,方法若干

    体现重载

    再创建测试类,创建3个对象,输出任意一个对象的任何一个属性的值,

    并且调用一下方法

    JAVA原则之一:最小作用域最强原则(就近原则)

    this:关键字  本类中使用

    1、指代本类对象

    常常被用来区分同名的局部变量和全局变量

    2、调用构造方法

    只能在构造方法中调用

    必须在第一行使用

    格式:this([实际参数列表]);

    this不能出现在static方法中

    构造方法和方法的区别?

    方法:

    有返回值类型(如果没有返回值也要写void)

    方法名可以自定义

    可以通过对象名/类名.方法名调用

    构造方法:

    没有返回值类型连void都没有

    方法名必须为类名

    只能通过newthis调用

    标准的Java类:称为javaBean

    1、属性私有

    2、提供公有的getXXsetXX方法

    3、提供公有无参构造方法

    属性封装:

    1、将属性私有(private)

    2、提供公有的getXXXsetXXX方法(public)

    package com.qianfeng.demo2;

    public class TestMain01 {

    public static void main(String[] args) {

    //调用无参构造方法

    Dog dog1=new Dog();

    dog1.age=1;

    dog1.name="旺财";

    dog1.type="土狗";

    //调用有参的构造方法

    Dog dog2=new Dog("豆豆", "藏獒", 10);

    System.out.println(dog2.name);

    }

    }

    package com.qianfeng.demo2;

    public class Dog {

    public String name;

    public String type;

    public int age;

    //无参构造方法

    public Dog(){

    }

    //有参构造方法,创建对象的时候传入属性的值

    public Dog(String n,String t,int a)

    {

    name=n;

    type=t;

    age=a;

    }

    /*练习:创建一个类,要求

    体现构造方法的重载,

    并调用*/

    }

    package com.qianfeng.demo3;

    public class TestMain02 {

    public static void main(String[] args) {

    // TODO Auto-generated method stub

    Cat cat=new Cat();//创建对象并完成实例化

    //cat.show("咪咪");

    System.out.println(cat.name);

    // cat.Cat();

    }

    }

    package com.qianfeng.demo3;

    public class Cat {

    public String name;//名称

    public int price;//价格

    public Cat() {

    //this的第二种用法:调用构造方法,必须在其它构造方法调用并且只能是第一行

    this("小花",666);

    System.out.println("哈哈,我是无参");

    }

    public Cat(String name,int price)

    {

    this.name=name;

    this.price=price;

    }

    // public void Cat() {

    // System.out.println("OK");

    // }

    public void show(String name)

    {

    // this();//不可用,只能在构造方法才可以调用其它构造方法

    //this可以指代本类对象

    this.name=name;

    //System.out.println(name);

    }

    public void print() {

    this.show("测试");//也是可以的

    }

    public static void test() {

    // this.name="豆豆";//this不能出现在static

    }

    }

    //练习学生信息及手机信息。涉及三个类:Student,Phone,TestMain02

    package com.qianfeng.demo4;

    public class TestMain02 {

    public static void main(String[] args) {

    //创建学生对象

    Student stu=new Student();

    //创建手机对象并赋值

    Phone phone=new Phone("苹果", "7", 5999);

    //匿名对象:一般只使用一次的时候,我们习惯用匿名对象

    stu.setPhone(new Phone("诺基亚", "1300", 999));//设置phone

    stu.test();

    Student student=new Student("黄恒键", '', 16060007,

    new Phone("诺基亚", "5200", 99));

    student.test();

    }

    }

    package com.qianfeng.demo4;

    public class Phone {

    private String type;//品牌

    private String name;//名称

    private double price;//价钱

    public String getType() {

    return type;

    }

    public void setType(String type) {

    this.type = type;

    }

    public String getName() {

    return name;

    }

    public void setName(String name) {

    this.name = name;

    }

    public double getPrice() {

    return price;

    }

    public void setPrice(double price) {

    this.price = price;

    }

    public Phone(String type, String name, double price) {

    super();

    this.type = type;

    this.name = name;

    this.price = price;

    }

    public Phone() {

    // TODO Auto-generated constructor stub

    }

    public void show() {

    System.out.println("手机:品牌:"+type+",名称:"+name+",价格:"+price);

    }

    }

    package com.qianfeng.demo4;

    public class Student {

    private String name;//姓名

    private char sex;//性别

    private int no;//学号

    private Phone phone;//手机对象

    public String getName() {

    return name;

    }

    public void setName(String name) {

    this.name = name;

    }

    public char getSex() {

    return sex;

    }

    public void setSex(char sex) {

    this.sex = sex;

    }

    public int getNo() {

    return no;

    }

    public void setNo(int no) {

    this.no = no;

    }

    public Phone getPhone() {

    return phone;

    }

    public void setPhone(Phone phone) {

    this.phone = phone;

    }

    public Student(String name, char sex, int no, Phone phone) {

    super();

    this.name = name;

    this.sex = sex;

    this.no = no;

    this.phone = phone;

    }

    public Student() {

    // TODO Auto-generated constructor stub

    }

    public void test() {

    //调用手机类中的方法

    phone.show();

    }

    }

    练习:

    创建类(Phone)

    属性若干

    方法自定义

    创建类(Student)

    属性:

    姓名、学号、性别、手机信息

    方法若干

    创建测试类(main方法)

    请创建2个学生对象

    步骤:

    1、创建Phone

    2、创建属性和方法

    3、创建Student

    4、创建属性(要注意手机信息这个属性)

    5、创建方法

    6、创建测试类,并且创建对象测试

    作业的格式

    文件夹名称:0718--列姓名

    文件夹内部放java源文件

    每天早上9点之前交

    明天的内容:

    方法的参数传递

    static关键字

    设计模式之单例模式

    继承

    super

    访问修饰符

    扩展:递归

    周三:

    重写

    Object

    抽象类

    final

    接口

    周四:

    多态

    设计模式之简单工厂模式

    周五:

    内部类

    总结

    数组

  • 相关阅读:
    转 oracle dual表
    笑话收集
    ls指令排序
    oracle中的连接
    linux系统磁盘突然满了解决方案
    转 Oracle temp空间管理
    11个JavaScript颜色选择器插件
    C#部分正则判断
    Script Encoder:screnc.exe加密解密
    JavaScript Tween算法及缓动效果
  • 原文地址:https://www.cnblogs.com/weigongcheng/p/5688563.html
Copyright © 2011-2022 走看看